Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch - Dateien aus dem Vormonat verschieben (Probleme mit Leerzeichen)

Frage Entwicklung Batch & Shell

Mitglied: Nessilia

Nessilia (Level 1) - Jetzt verbinden

07.09.2010, aktualisiert 08.09.2010, 4543 Aufrufe, 6 Kommentare

Hallo,

ich hab folgendes Problem:

Ich möchte eine Batchdatei erstellen, die in einem Ordner alle Dateien aus dem Vormonat in einen anderen Ordner verschiebt. Die Batchdatei sieht folgendermaßen aus:

01.
set jahr=%date:~-4% 
02.
set monat=%date:~-7,2% 
03.
set mon_now=%date:~-7,2% 
04.
set tag=%date:~-10,2% 
05.
 
06.
IF [07]==[%monat%] SET /A monat=7 
07.
IF [08]==[%monat%] SET /A monat=8 
08.
IF [09]==[%monat%] SET /A monat=9 
09.
 
10.
set /a monat=%monat%-1 
11.
 
12.
IF 7==%monat% SET monat=07 
13.
IF 8==%monat% SET monat=08 
14.
IF 9==%monat% SET monat=09 
15.
 
16.
echo %jahr%-%mon_now%-%tag%   Archivierung wurde gestartet 
17.
 
18.
rem Archivordner wird erzeugt, falls nicht vorhanden 
19.
rem Hier müssen die benötigten Pfade definiert werden 
20.
rem -------------------------------------------------------- 
21.
 
22.
rem Name des Archivordners 
23.
set ordner=Archiv_%jahr%_%monat% 
24.
rem Pfad vor der Archivordner liegen soll 
25.
set pfad=C:\Archiv 
26.
rem Name des zu untersuchenden Ordners 
27.
set source=C:\Eingang 
28.
 
29.
if not exist %pfad%\%ordner% (md %pfad%\%ordner% 
30.
 
31.
echo %ordner% wurde neu erzeugt 
32.
echo %ordner% wurde neu erzeugt >>%jahr%-%monat%.log) 
33.
 
34.
rem if exist %jahr%-%monat%.log del %jahr%-%monat%.log 
35.
 
36.
rem Alle Dateien aus dem jeweiligen Monat werden nun verschoben 
37.
rem -------------------------------------------------- 
38.
 
39.
FOR /f "tokens=4" %%a IN ('dir %source% /A-D ^|find "%monat%.%jahr%"') DO ( 
40.
 
41.
move %source%\"%%a" %pfad%\%ordner%  
42.
 
43.
rem Eine Logdatei der verschobenen Dateien wird erzeugt 
44.
echo %jahr%-%mon_now%-%tag% %source%\"%%a" wurde nach %pfad%\%ordner% verschoben 
45.
echo %jahr%-%mon_now%-%tag% %source%\"%%a" wurde nach %pfad%\%ordner% verschoben >>%jahr%-%monat%.log)

Nun soweit funktioniert das Programm. Aber leider gibt es auch Dateinamen, die Leerzeichen enthalten und diese werden nicht mehr richtig gelesen. Ich muss leider zugeben, dass ich auf diesem Gebiet ein Neuling bin und habe leider auch nichts zu meinem Problem in anderen Beiträgen gefunden. Ich würde mich über eure Hilfe freuen.
Mitglied: 60730
07.09.2010 um 16:09 Uhr
Moin,

bitte schreib deine batch doch zwischen zwei <code></code> Blöcke siehe Formatierungshilfe.

01.
:parameter 
02.
set source=C:\Eingang 
03.
rem lm == Letzter Monat 
04.
set /a "lm"="%date:~-7,2%-1" 
05.
if "%lm%" lss "9" set ARCHIV=C:\Archiv_%date:~-4%_0%lm% 
06.
if "%lm%" gtr "10" set ARCHIV=C:\Archiv_%date:~-4%_%lm% 
07.
if not exist %Archiv% md %Archiv% 
08.
 
09.
FOR /f "tokens=4 delims=" %%a in ('dir %source% /A-D ^|find "%date:~-7,2%.%date:~-4%"') DO ( 
10.
                   move %source%\"%%a" "%Archiv%\" 
11.
                   echo  %source%\"%%a" wurde nach %Archiv% verschoben>>%jahr%-%monat%.log 
12.
)
ungetestet da ich nicht wirklich verstanden habe, was du eigentlich genau machen willst.

Denn du setzt zwar einen Parameter für den Tag - benutzt Ihn aber nicht und wenn du immer alle Dateien am ersten eines Monats woanders hinschiebst - erübrigt sich das ganze "Gedöhns" nochmal auf eine - max. 5 zeilen....

Gruß
Bitte warten ..
Mitglied: Nessilia
07.09.2010 um 16:32 Uhr
Sorry, die Variable Tag ist ein Überbleibsel auch vorherigen Versuchen.

Ich möchte, dass alle Dateien aus dem Vormonat in einen anderen Ordner verschoben werden und das funktioniert auch. Aber sobald ein Leerzeichen im Dateiname steht, wird der Dateiname nicht mehr korrekt gelesen. Mit „delims=“ hab ich es auch schon Versucht, nur leider funktioniert das irgendwie nicht.
Bitte warten ..
Mitglied: bastla
07.09.2010 um 22:08 Uhr
Hallo Nessilia und willkommen im Forum!

Ändere ab Zeile 39 auf:
01.
FOR /f "tokens=3*" %%a IN ('dir %source% /A-D ^|find "%monat%.%jahr%"') DO ( 
02.
    move "%source%\%%b" "%pfad%\%ordner%" 
03.
    rem Eine Logdatei der verschobenen Dateien wird erzeugt  
04.
    echo %jahr%-%mon_now%-%tag% "%source%\%%b" wurde nach %pfad%\%ordner% verschoben  
05.
    echo %jahr%-%mon_now%-%tag% "%source%\%%b" wurde nach %pfad%\%ordner% verschoben >>%jahr%-%monat%.log 
06.
)
Grüße
bastla
Bitte warten ..
Mitglied: Nessilia
08.09.2010 um 08:55 Uhr
Hallo bastla,

danke für deinen Vorschlag. Leider besteht weiterhin das Problem mit den Leerzeichen.

Beispiel:

Die Datei lautet: Test 2.txt

Verwende ich nun

01.
FOR /f "tokens=3*" %%a IN ('dir %source% /A-D ^|find "%monat%.%jahr%"') DO ( 
02.
echo "%%a")
Erscheint als Ergebnis für %%a ==> 0

Bei

01.
FOR /f "tokens=4*" %%a IN ('dir %source% /A-D ^|find "%monat%.%jahr%"') DO ( 
02.
echo "%%a")
Erhalte ich als Ergebnis für %%a ==> Test

Was muss ich in der FOR Schleife nun verändern, damit der Parameter bspw. mit %%a = Test 2.txt belegt wird.

Gruß
Nessilia
Bitte warten ..
Mitglied: 60730
08.09.2010 um 10:53 Uhr
Zitat von Nessilia:
Hallo bastla,

danke für deinen Vorschlag. Leider besteht weiterhin das Problem mit den Leerzeichen.

01.
FOR /f "tokens=4,*" %%a IN ('dir %source% /A-D ^|find "%monat%.%jahr%"'') DO ( 
02.
	if not "%%b"=="" ( 
03.
		echo %%a %%b 
04.
	) else ( 
05.
		echo %%a 
06.
07.
08.
 
Gruß

<edit> bei dir ist es 4, beim Bastla 3 und bei mir wärs 7 <edit>
Bitte warten ..
Mitglied: Nessilia
08.09.2010 um 11:51 Uhr
Super, vielen vielen Dank an euch beide. Es funktioniert jetzt.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Per Batch Dateien in einen Ordner - ext. Festplatte übertragen (2)

Frage von tocksick zum Thema Batch & Shell ...

Windows Server
Zuordnung von Netzlaufwerken mit Hilfe von Batch-Dateien (4)

Frage von doc-jochim zum Thema Windows Server ...

Neue Wissensbeiträge
Microsoft

Restrictor: Profi-Schutz für jedes Window

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
VPN Tunnel aufbauen (16)

Frage von Hajo2006 zum Thema LAN, WAN, Wireless ...

Microsoft Office
Saubere HTML aus Word-Dokument (15)

Frage von peterpa zum Thema Microsoft Office ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (14)

Frage von marshall75000 zum Thema Router & Routing ...

E-Mail
gelöst Probleme beim E-Mail Empfang (12)

Frage von TommyB83 zum Thema E-Mail ...