Discussione:
Spostare file in batch
(troppo vecchio per rispondere)
Davi
2011-06-21 08:08:42 UTC
Permalink
Ciao a tutti!
Avrei bisogno di un aiuto sulla creazione di un file .bat:
Ho una cartella che costantemente si riempe di file *.zip così
chiamati:
"yymmdd_codice.zip"
Io vorrei fare un file .bat che verifichi la presenza di questi file
e
li smisti in cartelle "yymmdd", prendendo tale nome dal nome del
file.
Con il comando Move riesco a spostarli tutti insieme in una data
cartella fissa, quel che non so fare è spostarli in una cartella che
deve variare con il nome del file.
Appunto importante, se le cartelle *non* esistono (cosa comune),
queste devono essere prima create sempre dal file .bat in questione.
Trattandosi di migliaia di file e, dovendo la procedura girare molte
volte al giorno, come posso scrivere il file di batch?
Grazie, Davide.
Reventlov
2011-06-22 14:05:39 UTC
Permalink
Post by Davi
Io vorrei fare un file .bat che verifichi la presenza di questi file
e
li smisti in cartelle "yymmdd", prendendo tale nome dal nome del
file.
set Today=%date:~8,2%%date:~3,2%%date:~0,2%
echo %today%
--
Giovanni Cenati (Bergamo, Italy)
Write to "Reventlov" at katamail com
http://digilander.libero.it/Cenati (Esempi e programmi in VbScript)
--
Reventlov
2011-06-25 13:04:54 UTC
Permalink
Post by Reventlov
set Today=%date:~8,2%%date:~3,2%%date:~0,2%
echo %today%
Anzi... no. Questo può servire a spostare i file del giorno.
Per smistare i file è meglio un linguaggio come vbscript.
Fare la shell di dir /s/b e poi processare ogni riga del risultato.
Dopo le vacanze.
--
Giovanni Cenati (Bergamo, Italy)
Write to "Reventlov" at katamail com
http://digilander.libero.it/Cenati (Esempi e programmi in VbScript)
--
Reventlov
2011-07-15 16:15:13 UTC
Permalink
Post by Davi
Io vorrei fare un file .bat che verifichi la presenza di questi file
e li smisti in cartelle "yymmdd", prendendo tale nome dal nome del
file.
Va salvato con estensione .vbs


CartellaSorgente = "c:\dati\test-sorgente\"
CartellaDestinazione = "c:\dati\test-destinazione\"

A = CaptureDOS("cmd /c dir " & CartellaSorgente & "*.zip /b",True)

Lista = Split(a,vbCrLf)

Set FSO=createobject("scripting.filesystemobject")
For i=0 To UBound(lista)-1
SubCartella= Mid(lista(i),1,6)
If Not FSO.FolderExists( CartellaDestinazione & SubCartella) Then
fso.CreateFolder(CartellaDestinazione & SubCartella)
End If
Set MyFile = fso.GetFile(CartellaSorgente & lista(i))
MyFile.Move CartellaDestinazione & SubCartella & "\"
Next


Function CaptureDOS( sCommand, bSynch )
Dim sFolder, sName, sTempFile
Dim sResult, oFSO, DQ, TEMPORARY_FOLDER, AS_SYSTEMDEFAULT
Dim const_read, oShell
DQ=Chr(34)
CONST_READ = 1
TEMPORARY_FOLDER = 2
AS_SYSTEMDEFAULT = -2
Set oFSO=CreateObject("scripting.filesystemobject")
Set oShell = CreateObject( "WScript.Shell" )
sResult = vbNullString

sFolder = oFSO.GetSpecialFolder( TEMPORARY_FOLDER )
sName = oFSO.GetTempName
sTempFile = oFSO.BuildPath( sFolder, sName )
'sTempFile="c:\dati\temp.txt"

oShell.Run sCommand & " >" & DQ & sTempFile & DQ, 0, bSynch

'On Error Resume Next
Set oStream = oFSO.OpenTextFile(sTempFile , CONST_READ)
sResult = oStream.ReadAll

If Err.Number <> 0 Then
sResult = vbNullString
End If
'On Error GoTo 0
oStream.Close
oFSO.DeleteFile( sTempFile )
CaptureDOS = sResult
End Function
--
Giovanni Cenati (Bergamo, Italy)
Write to "Reventlov" at katamail com
http://digilander.libero.it/Cenati (Esempi e programmi in VbScript)
--
Continua a leggere su narkive:
Loading...