Discussione:
Batch con errore
(troppo vecchio per rispondere)
carloazeglio
2007-07-16 12:45:18 UTC
Permalink
Ho bisogno di modificare il nome di un file (miofile.txt) aggiungendovi la
data.
Ho trovato questo batch che fa il set delle variabili ma ad un certo punto
si blocca!
Qualcuno mi aiuta? Grazie in anticipo!
carloazeglio

-------
REM @echo off

setlocal

set yyyy=

set $tok=1-3
for /f "tokens=1 delims=.:/-, " %%u in ('date /t') do set $d1=%%u
if "%$d1:~0,1%" GTR "9" set $tok=2-4
for /f "tokens=%$tok% delims=.:/-, " %%u in ('date /t') do (
for /f "skip=1 tokens=2-4 delims=/-,()." %%x in ('echo.^|date') do (
set %%x=%%u
set %%y=%%v
set %%z=%%w
set $d1=
set $tok=))

if "%yyyy%"=="" set yyyy=%yy%
if /I %yyyy% LSS 100 set /A yyyy=2000 + 1%yyyy% - 100

set /a mm=1%mm% - 100
set /a dd=1%dd% - 100

echo ren C:\miofile.txt C:\miofile%dd%-%mm%-%yyyy%.txt

:end
-------
Franz aRTiglio
2007-07-16 20:42:35 UTC
Permalink
Post by carloazeglio
Ho bisogno di modificare il nome di un file (miofile.txt)
aggiungendovi la data.
Ho trovato questo batch che fa il set delle variabili ma ad un certo
punto si blocca!
[cut]

ma perche' farti del male ? :)

il succo e' qua:

echo %date:~0,2% %date:~-7,2% %date:~-4,4%

giorno, mese, anno

SET NewName=%OldName:.txt=%

toglie il ".txt" finale

Questo batch aggiunge la data al file
specificato nella riga di comando:


@echo off
setlocal enabledelayedexpansion
Set OldName=%1
SET NewName=%OldName:.txt=%
Set NewName=%NewName%%date:~0,2%%date:~-7,2%%date:~-4,4%.txt
ECHO ren %1 %NewName%

togliendo la parola "ECHO" finale rinominera' il file
carloazeglio
2007-07-17 11:48:34 UTC
Permalink
"Franz aRTiglio" ha scritto
Post by Franz aRTiglio
ma perche' farti del male ? :)
echo %date:~0,2% %date:~-7,2% %date:~-4,4%
[...]
Beh, che dire: grazie infinite! Funziona tutto alla perfezione.
Immagino che le istruzioni siano appositamente per Win XP, infatti su Win
2000 server non funziona a dovere (il file viene rinominato con l'aggiunta
di mese e anno, ma al posto del giorno compare la lettera "a")...
Si puo' risolvere, oppure su Win 2000 server non è possibile far niente?
Mille grazie per l'interessamento!
--
carloazeglio
Franz_aRTiglio
2007-07-17 12:15:49 UTC
Permalink
Post by carloazeglio
"Franz aRTiglio" ha scritto
Post by Franz aRTiglio
ma perche' farti del male ? :)
echo %date:~0,2% %date:~-7,2% %date:~-4,4%
[...]
Beh, che dire: grazie infinite! Funziona tutto alla perfezione.
Immagino che le istruzioni siano appositamente per Win XP, infatti su
Win 2000 server non funziona a dovere (il file viene rinominato con
l'aggiunta di mese e anno, ma al posto del giorno compare la lettera
"a")... Si puo' risolvere, oppure su Win 2000 server non è possibile far
niente?
Sisi, e' l'output della variabile %date% che su 2000 mette anche il
giorno, quindi ci va' il segno - per distinguere la direzione
dell'estrazione
del giorno dalla stringa:

al posto di echo %date:~0,2% mettici

echo %date:~-0,2%

(nota il segno meno prima dello zero)
carloazeglio
2007-07-17 13:50:37 UTC
Permalink
"Franz_aRTiglio" ha scritto
Post by Franz_aRTiglio
Sisi, e' l'output della variabile %date% che su 2000 mette anche il
giorno, quindi ci va' il segno - per distinguere la direzione
dell'estrazione
al posto di echo %date:~0,2% mettici
echo %date:~-0,2%
(nota il segno meno prima dello zero)
Credo di aver capito come funziona questa estrazione...
Pero' hai dimenticato un "1"... :-))
echo %date:~-10,2%
Ora funziona tutto a puntino!
Ciao e ancora grazie!!
--
carloazeglio

Continua a leggere su narkive:
Loading...