Προς το περιεχόμενο

batch file


Exiled2

Προτεινόμενες αναρτήσεις

Δημοσ.
3) Για να μη ρυπαίνουν το περιβάλλον οι τοπικές μεταβλητές, χρησιμοποιήστε τη setlocal. Έτσι αποφεύγονται τα Set max= στο τέλος.

Τί μαθαίνει κανείς... Ευχαριστούμε για το τιπ! :-)

Δημοσ.

Μέχρι ώρας έχω φτάσει σε αυτό το σημείο:

@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%\*.*

 

Υπάρχει τρόπος να μην εμφανίζεται το μύνημα λάθους όταν δεν μπορεί να κάνει μετονομασία?

Δημοσ.

Πιο σύντομος τρόπος για τη 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

Δημοσ.

Εκεί που λες

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 (πουθενά).

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...