2017-07-26 6 views
-1

Ich brauche ein Skript zum Kopieren von Dateien von einem Speicherort, der Dateien aus allen Monaten enthält. Die Sache ist, dass ich nur die Dateien von gestern zu einem temporären Ort kopieren muss. Ich habe viel gesucht, konnte aber keine Lösung finden.Benötigen Stapel zum Kopieren von Dateien von gestern (Sysdate -1)

Ich habe es in dieser Form versucht. Der erste Teil zeigt mir den gestrigen Tag.

@echo off 
Set _Source=V:\IngOnline 
Set _Dest=D:\SPEtransfer\IngOnline\Temp 
set log=D:\SPEtransfer\logIngOnlineTransfer.log 
set day=-1 
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s) 
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2) 
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a" 
del "%temp%\%~n0.vbs" 
set "YYYY=%result:~0,4%" 
set "MM=%result:~4,2%" 
set "DD=%result:~6,2%" 
set "data=%yyyy%-%mm%-%dd%" 

echo Yesterday was "%data%" 
pause 

forfiles /p %_Source% /d -1 "cmd /c copy %_Source%\*.* %_Dest%" 
+0

SO ist kein kostenloser Kodierungsdienst. Bitte zeigen Sie uns, was Sie bisher versucht haben und wo Sie stecken geblieben sind. –

+0

Nehmen Sie alle diese Kommentare und bearbeiten Sie sie wieder in Ihre ursprüngliche Frage. – SandPiper

+0

Ich habe den ursprünglichen Beitrag bearbeitet und hinzugefügt, was ich versucht habe. – JokyFlow

Antwort

0

Dies wird Ersatzcode vereinfacht die nur %_D% jede Datei in %_S%, die so modifiziert wurde gestern kopieren sollten:

@Echo Off 

Set "_S=V:\IngOnline" 
Set "_D=D:\SPEtransfer\IngOnline\Temp" 

For /F UseBackQ %%A In (`PowerShell^ 
"(Get-Date).AddDays(-1).ToString('dd/MM/yyyy')"`) Do ForFiles /P "%_S%" /D^ 
%%A /C "Cmd /C If @IsDir==FALSE If @FDate==%%A Copy @Path 0x22%_D%0x22>Nul" 

Sie müssen nur das Format in ToString(' ') Spiele zu gewährleisten, die von Ihrem ForFiles Befehl erforderlich , (geben Sie ForFiles /? in einem Eingabeaufforderungsfenster ein, um es zu finden).

+0

Ja, so etwas. Ich habe die Version versucht, die Sie gemacht haben, aber ich erhalte den folgenden Fehler: D: \ SPEtransfer> IngOnlineT-1copy.bat Gestern war "2017-07-25" Drücken Sie eine beliebige Taste, um fortzufahren. . . Fehler: Ungültiges Argument/Option - 'Cmd/C Kopieren @ Pfad 0x22D: \ SPEtransfer \ IngOnline \ Temp0x22'. Typ "FORFILES /?" zur Verwendung. – JokyFlow

+0

Warum haben Sie nach "IngOnline" und vor "\ Temp" in dieser Ausgabe ein falsches/nicht vorhandenes Leerzeichen? Hast du irgendwo einen Tippfehler gemacht? – Compo

+0

Es ist ein Tippfehler, wenn ich aus CMD kopiert habe, habe ich versehentlich ein Leerzeichen eingegeben. – JokyFlow

Verwandte Themen