Top-Themen

Aktuelle Themen (A bis Z)

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, 4573 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
Batch zum suchen und verschieben von Dateien
gelöst Frage von zeroblue2005Batch & Shell5 Kommentare

Guten Tag Zusammen, ich benötige eine Batch, die folgendes kann: 1. Suche in bestimmten Dateipfad nach nach Dateien eines ...

Batch & Shell
Batch Datei zum verschieben von Dateien aus Unterordnern ?
gelöst Frage von Ghostrider1911Batch & Shell10 Kommentare

Hallo, ich bräuchte eine Batch Datei die Dateien aus Unterordnern verschiebt. Also ich habe folgende Verzeichniss Struktur: Z:\Dateien\Ordner1\M1\ Z:\Dateien\Ordnärx\M1\ ...

Batch & Shell
Batch bestimmte Dateien verschieben ohne Ordnerstruktur
gelöst Frage von OOmatrixOOBatch & Shell14 Kommentare

Hallo. Ich möchte aus mehreren Ordnern und Unterordnern bestimmte Dateien in ein anderes Verzeichnis verschieben. Habe schon dies probiert: ...

Batch & Shell
Per Batch Dateien aus Unterordner verschieben
gelöst Frage von ministaBatch & Shell10 Kommentare

Hallo Zusammen Ich habe folgende Struktur: Ich möchte nun dass alle Dateien aus dem Ordner B und deren Subordner ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 5 StundenWindows 101 Kommentar

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 7 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 21 StundenInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...