2016-07-13 3 views
0

Meine Anforderung besteht darin, eine Liste von Ordnerpfaden zu erstellen - einige mit einem yyyyMMdd-Datum im Pfad - und diese auf Wunsch an einen anderen Ort zu kopieren.Wie kopiert man Daten für eine Reihe von Daten im Skript?

Einige Ordner müssen nur kopiert werden, wie ist Einige müssen fünf Tage Geschichte kopiert haben, die letzten fünf Tage, zu berechnen und sie in den Ordnerpfad Einige müssen ersetzt, das gleiche zu tun, aber für 15 oder 90 Tage Geschichte.

Ich versuche, den besten Weg zu finden, dies zu tun. Ich wollte es ursprünglich als BATCH-Datei machen, aber ich kann nicht sehen, wie man Daten in einer Schleife in BAT berechnet und ersetzt.

Gibt es eine bessere Möglichkeit, dies in einem Basisskript zu tun, das von der Befehlszeile ausgeführt werden kann?

+0

Ich würde Ihnen empfehlen, PowerShell zu lernen. Ihre Zeitinvestition wird belohnt. Dies ist kein kostenloser Service zum Verfassen von Skripten, aber zögern Sie nicht, um Hilfe bei bestimmten Fragen zu fragen. –

+0

Falls Sie es trotzdem mit [tag: batch-file] versuchen möchten, könnten Sie mit dem Befehl 'forfiles' beginnen - geben Sie' forfiles /? 'In ein Eingabeaufforderungsfenster ein und lesen Sie die Hilfe sehr aufmerksam durch; Sie werden eine '/ D'-Option für die Datumsfilterung bemerken, die eine vorzeichenbehaftete Zahl wie' -5' akzeptiert, um Artikel '5' Tage alt oder älter zurückzugeben ... – aschipfl

Antwort

2

Obwohl dies kein Code-Writing-Service ist, klingt es, als ob Sie neu in der Sprache sind, also hier sind einige Dinge, die Ihnen helfen können, diese Aufgabe zu erfüllen. In Zukunft würde ich empfehlen, Code hinzuzufügen, den Sie bereits in Ihrer Frage ausprobiert haben, da Sie wahrscheinlich mehr Antworten erhalten werden.

# Get-Date is a cmdlet in PowerShell to get the current date 
# We use AddDays(-5) to subtract however many days we would like. Here we are subtracting 5 days from current date 
# ToString converts the data type so that we can use the custom date format of yyyyMMdd 
$Date = (Get-Date).AddDays(-5).ToString('yyyyMMdd') 

# Get-Item cmdlet in PowerShell is used to get files in a directory 
# Select allows us to get a specific piece of data from the files found and ExpandProperty hides the data header 
$Files = Get-Item -Path C:\Temp\*$Date.txt | Select -ExpandProperty FullName 

# Copies Files Found with Get-Item 
Copy-Item -Path $Files -Destination C:\SomePathHere-Verbose -Force 

Ausgabe würde wie folgt aussehen:

PS C:\> $Date = (Get-Date).AddDays(-5).ToString('yyyyMMdd') 

# What is stored in $Date variable 
PS C:\> $Date 
20160708 

PS C:\> $Files = Get-Item -Path C:\Temp\*$Date.txt | Select -ExpandProperty FullName 

# What is stored in $Files variable 
PS C:\> Get-Item -Path C:\Temp\*$Date.txt | Select -ExpandProperty FullName 
C:\Temp\Somefile20160708.txt 
C:\Temp\SomeOtherFile20160708.txt 

PS C:\> Copy-Item -Path $Files -Destination C:\Test -Verbose -Force 
VERBOSE: Performing the operation "Copy File" on target "Item: C:\Temp\Somefile20160708.txt Destination: C:\Test\Somefile20160708.txt". 
VERBOSE: Performing the operation "Copy File" on target "Item: C:\Temp\SomeFile220160708.txt Destination: C:\Test\SomeOtherFile220160708.txt". 

Hoffnung, dies hilft Ihnen, eine Lösung zu erreichen. PowerShell ist ideal für diese Art von Aufgaben, ich empfehle definitiv, es mehr zu erkunden.

Verwandte Themen