Eusebius Δημοσ. 13 Οκτωβρίου 2006 Δημοσ. 13 Οκτωβρίου 2006 3) Για να μη ρυπαίνουν το περιβάλλον οι τοπικές μεταβλητές, χρησιμοποιήστε τη setlocal. Έτσι αποφεύγονται τα Set max= στο τέλος. Τί μαθαίνει κανείς... Ευχαριστούμε για το τιπ!
alkisg Δημοσ. 13 Οκτωβρίου 2006 Δημοσ. 13 Οκτωβρίου 2006 Αμ πώς! Πάνω απ' όλα η προστασία του περιβάλλοντος! :-D
Exiled2 Δημοσ. 14 Οκτωβρίου 2006 Μέλος Δημοσ. 14 Οκτωβρίου 2006 Μέχρι ώρας έχω φτάσει σε αυτό το σημείο: @Echo off Set backupdir=backacc Set max=4561305 set dn=0 rem 650mb=665600 rem 700mb=716800 rem 4,35gb=4561305 for /f "tokens=1,2,3,4* delims= " %%l in ('"dir %HomeDrive%\%backupdir% /s /-c | find "File(s""') do set size=%%n if %size% GEQ 1000 (Set size=%size:~0,-3%) if %size% GTR %max% (Goto bigger) if %size% LEQ %max% (Goto end) :bigger set /a dn=%dn%+1 ren %HomeDrive%\%backupdir% %backupdir%%dn% if errorlevel=1 goto bigger md %HomeDrive%\%backupdir% For %%l in (%date%) Do Echo %%l > file.txt For /f "tokens=1,2,3 delims=/" %%i in (file.txt) Do set d=%%i For /f "tokens=1,2,3 delims=/" %%i in (file.txt) Do set m=%%j For /f "tokens=1,2,3 delims=/" %%i in (file.txt) Do set y=%%k xcopy %HomeDrive%\%backupdir%%dn% %HomeDrive%\%backupdir% /D:%m%-%d%-%y% /y del file.txt Goto End :End %HomeDrive%\Progra~1\Ahead\Nero\nerocmd --write --drivename r --real --detect_non_empty_cdrw --force_erase_cdrw --disable_eject --underrun_prot --recursive --create_iso_fs --speed 10 --iso new %HomeDrive%\%backupdir%\*.* Υπάρχει τρόπος να μην εμφανίζεται το μύνημα λάθους όταν δεν μπορεί να κάνει μετονομασία?
alkisg Δημοσ. 14 Οκτωβρίου 2006 Δημοσ. 14 Οκτωβρίου 2006 Πιο σύντομος τρόπος για τη date: for /f "tokens=1,2,3 delims=/" %d in ("%date:~4,10%") do set d=%d & set e=%e & set f=%f Πρόσεξε να βάλεις δυο %% όταν τη χρησιμοποιείς μέσα σε batch file. Ανακατεύθυνση stderr στο stdout για να μη φαίνεται το μήνυμα στη ren: ren asdf qwer > nul 2>&1
Exiled2 Δημοσ. 14 Οκτωβρίου 2006 Μέλος Δημοσ. 14 Οκτωβρίου 2006 Thanks! Αυτό με την ανακατεύθυνση δεν το κατάλαβα.
alkisg Δημοσ. 14 Οκτωβρίου 2006 Δημοσ. 14 Οκτωβρίου 2006 Εκεί που λες ren %HomeDrive%\%backupdir% %backupdir%%dn% πρέπει να το κάνεις ren %HomeDrive%\%backupdir% %backupdir%%dn% > nul 2>&1 Ανακατεύθυνση είναι το εξής: dir > file.txt Αντί να πάει στην οθόνη, πάει στο αρχείο file.txt Μια εντολή έχει 3 αρχεία, stdin (είσοδος - συνήθως πληκτρολόγιο), stdout (έξοδος - συνήθως οθόνη) και stderr (έξοδος λαθών - συνήθως οθόνη). Όταν κάνεις dir > file.txt ανακατευθύνεις μόνο το stdout, όχι το stderr. Το stdout είναι το 1, το stderr είναι το 2. Το 2>&1 λέει ότι το stderr να πάει εκεί που πηγαίνει και το stdout, δηλαδή στη συγκεκριμένη περίπτωση στο nul (πουθενά).
alkisg Δημοσ. 15 Οκτωβρίου 2006 Δημοσ. 15 Οκτωβρίου 2006 BTW, μόλις βρήκα έναν open source editor για να γράφουμε σωστά τα ελληνικά σε batch files: http://www.insomnia.gr/vb3/showthread.php?p=1329874#post1329874 Κατά το άνοιγμα των .bat αρχείων, απλά επιλέγουμε κωδικοσελίδα 737.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.