Newsgroup: it.comp.os.dos
Titolo: Variabile data

Devo fare un batch che crei una directory avente nome la data odierna nel
formato aaaammgg oppure aaa-mmm-gg.
Cercando nei vecchi msg ho trovato questo batchetto che crea una variabile
data.
echo off
echo @prompt set data=$d$
%comspec% /c _date.bat > date_.bat
call date_.bat
del _date.bat
del date_.bat
echo La data e': %data%
Il problema e che la data ha il format gg/mm/aaaa ed ovviamente non posso
creare una directory con lo slash nel nome.
E' possibile estrarre anno, mese e giorno dalla variabile?
Saluti.
Luciano

 ha scritto nel messaggio
news:avhe90$ffkhj$1...@ID-86073.news.dfncis.de...


 formato aaaammgg oppure aaa-mmm-gg.
[...]
Puoi usare questo:
( Attenzione che le ultime righe con il comando FOR vanno sulla stessa riga
e non su due righe come probabilmente appariranno sul NG )
ECHO OFF
if not "%1"=="" goto ciclo
echo Creazione di una cartella con la data corrente
echo nella forma "aaaammgg" (dal 2001 al 2009)
pause
echo.|date|find "corrente" >_temp.bat
echo set data=%%3 >data.bat
call _temp.bat
del data.bat>nul
del _temp.bat>nul
for %%a in (%data%) do call %0 %%a
set data=%aa%%mm%%gg%
echo Creazione della cartella: %data%
if not exist %data%\nul md %data%
for %%a in (x gg mm aa data) do set %%a=
goto fine
:ciclo
if "%x%"=="" set gg=%1
if "%x%"=="x" for %%b in (01 02 03 04 05 06 07 08 09 10 11 12) do if
"/%%b"=="%1" set mm=%%b
if "%x%"=="xx" for %%c in (01 02 03 04 05 06 07 08 09) do if "/20%%c"=="%1"
set aa=20%%c
set x=%x%x
:fine

 e non su due righe come probabilmente appariranno sul NG )
La crea, ma nel formato mmgg, si perde l'anno.
Se invece porto anche l'ultima istruzione sulla riga del'ultimo FOR mi da:
Opzione non valida - /2003
semprerebbe che non abbia eliminato lo slash.
Come recupero il nome della dir per il path di destinazione di xcopy?
Grazie.
Luciano

 formato aaaammgg oppure aaa-mmm-gg.
--------------------------------
Inviato via 
http://usenet.libero.it

 La crea, ma nel formato mmgg, si perde l'anno.
Ti riposto le ultime righe perche' dovrebbe funzionare:
Allora, dopo l'etichetta ":ciclo" la prima riga e'
if "%x%"=="" set gg=%1
la seconda:(tutta in una riga)
if "%x%"=="x" for %%b in (01 02 03 04 05 06 07 08 09 10 11 12) do if
"/%%b"=="%1" set mm=%%b
la terza:(tutta in una riga)
if "%x%"=="xx" for %%c in (01 02 03 04 05 06 07 08 09) do if "/20%%c"=="%1"
set aa=20%%c
Copialo bene rispettando gli spazi e vedrai che funziona


Chiaramente dopo vanno aggiunte le ultime due righe:
set x=%x%x
:fine

 > Copialo bene rispettando gli spazi e vedrai che funziona
Ok, ora va, grazie.
Come recupero il nome della directory per passarla alla riga successva?
xcopy /s c:\blabla\*.* z:\directoryappenacreata\
Inoltre, e' possibile specificare il path per la creazione della directory?
Saluti.
Luciano

 se può interessarti te lo invio.
Si, mi farebbe comodo grazie.
Con cosa l'hai scritto quest'exe? I vecchi basica e qbasic non esistono piu'
nelle ultime versioni del dos e scomodare VB6 per una cosetta del genere mi
sembra eccessivo:-)
Te lo domando perche' mi sono chiesto se recuperando gli eseguibili delle
versioni di basic che stavano nella 3.3 o 4.0 del dos si potessero
utilizzare con le ultime versioni di windows per piccoli (e leggeri!)
eseguibili.
Saluti.
Luciano

 ha scritto nel messaggio
news:avm2t0$guhc0$2...@ID-86073.news.dfncis.de...

Il nome della directory sta' nella variabile %data%.
Quindi prima della riga:
for %%a in (x gg mm aa data) do set %%a=
Inserisci:
xcopy /s c:\blabla\*.* z:\%data%\
Per recuperare il path della directory creata puoi fare cosě:
Dir %data% |find/i "directory" > direc.bat
echo set _path=%%2 >directory.bat
call direc.bat
del direc*.bat
Adesso il path ce l'hai sulla variabile %_path%
Spero di esserti stato utile.
Ciao

 Spero di esserti stato utile.
Moltissimo, grazie....!
Saluti.
Luciano


Purtroppo non conosco W2K e quindi non posso darti
una mano direttamente.
Comunque considera una cosa:
La variabile %data% (In Win98) si ottiene dall'output del comando
"date" che è: Data corrente: sab 11/01/2003
Probabilmente In W2K l'output sarà leggermente diverso
e quindi andranno modificate anche le seguenti righe:
echo.|date|find "corrente" >_temp.bat
echo set data=%%3 >data.bat
call _temp.bat
del data.bat>nul
del _temp.bat>nul
Cerca di capire il funzionamento di queste ultime così
potrai modificarle per ottenere la variabile %data%.
secondo quanto necessita in W2K.
Ciao

 ha scritto nel messaggio
news:avhe90$ffkhj$1...@ID-86073.news.dfncis.de...
