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 Verschiedene Dateien Verschieben und alte version umbenennen

Mitglied: jo4884

jo4884 (Level 1) - Jetzt verbinden

14.04.2010 um 10:59 Uhr, 4645 Aufrufe, 8 Kommentare

Ich bin ein absoluter Neuling im umgang mit Batch und
brauche dringend hilfe.
Hab schon das Forum durchsucht, find aber irgendwie nicht das was ich suche oder ich versteh es nicht.
Bitte um Hilfe!

Ich habe 2 Ordner (Input und Work). In beiden Ordern befinden sich 5 Unterordner die in Input und Work gleich benannt sind.
Im Inputordner befinden sich verschiedene dateien (.pdf, .doc, .docx, ...)
Ich möchte jetzt das alle dateien aus den Unterordnern von Input in die jeweiligen Unterordner von Work verschoben werden.
Weiter soll vorher geprüft werden ob eine Datei aus dem Inputordner schon im Workordner vorhanden ist.
Falls das der Fall sein sollte soll die Datei aus dem Workordner umbenannt werden
(z.B.: test.txt sol werden zu test_alt1.txt)
falls die datei test.txt jetzt zum dritten mal verschoben werden soll, dann soll test_alt1.txt zu test_alt2.txt werden
und test zu test_alt1.txt

Ich hoffe auf eure Hilfe
Mitglied: user217
14.04.2010 um 11:18 Uhr
probier mal das programm allway sync, vielleicht hilfts.
Bitte warten ..
Mitglied: jo4884
14.04.2010 um 11:37 Uhr
Ich hätte es gern als Batchdatei!
Bitte warten ..
Mitglied: LotPings
14.04.2010 um 12:31 Uhr
Hallo jo,

eigentlich mag ich es nicht fertige Lösungen vorzusetzen, aber dies ist ein schönes Beispiel für einen rekursiven Aufruf einer Subroutine.
Der Einfachheit halber habe ich das "alt" weggelassen und gehe davon aus das sich in den Dateinanen ansonsten kein "_" befindet.
01.
::MoveVersion.cmd::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
02.
@echo off & setlocal EnableDelayedExpansion 
03.
Set SrcFld=D:\Test\2010-04\Input 
04.
Set DstFld=D:\Test\2010-04\Work 
05.
Pushd "%SrcFld%" 
06.
For /f "Delims=" %%A in ('Dir /B/S/A-D *') Do Call :Proc "%%~fA" 
07.
Popd 
08.
goto :EOF 
09.
:Proc 
10.
echo ---- %1 
11.
Set "Var=%~dp1" 
12.
Set "DestPath=!Var:%SrcFld%=%DstFld%!" 
13.
If Not Exist "%DestPath%" MD "%DestPath%" 
14.
Set "Dest=%DestPath%%~nx1" 
15.
if Exist "%Dest%" Call :VersionInc "%Dest%" 
16.
echo Move %1 "%DestPath%"  
17.
Move %1 "%DestPath%" >NUL 
18.
Goto :Eof 
19.
:VersionInc %1 
20.
Setlocal 
21.
Set Cnt=0 
22.
For /F "Tokens=1,2 delims=_" %%B in ("%~n1") Do ( 
23.
  Set Name=%%B 
24.
  Set /A Cnt=%%C+1 
25.
26.
Set "NewName=%Name%_%Cnt%%~x1" 
27.
If Exist "%~dp1%NewName%" Call :VersionInc "%~dp1%NewName%" 
28.
Echo Ren %1 "%NewName%" 
29.
Ren %1 "%NewName%" 
30.
Goto :Eof 
31.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Gruß
Lotpings

Edit zum begrenzen auf 3 archivierte Versionen zwischen Zeile 25 und 26 einfügen:
If %Cnt% GTR 3 Del %1 & Goto :Eof
Bitte warten ..
Mitglied: jo4884
14.04.2010 um 14:04 Uhr
Danke für die schnelle Antwort, von der ich nicht viel Verstehe, aber leider funktioniert das bei mir
nicht .
Hab die Syntax von oben übernommen außer das ich in Zeile 3 und 4 meinen eigenen Pfad angegeben habe.
Wenn ich jetzt aus dem Command Window die .bat datei starte kommt eine Fehlermeldung das der Angegebene
Pfadname ungültig ist.
Was mach ich denn Falsch?

(Noch eine blöde Frage. Soll der obige Teil alles in eine einzelne bat-Datei?)

Gruß
Bitte warten ..
Mitglied: LotPings
14.04.2010 um 14:26 Uhr
Hallo jo,

habe es nochmal auf einem anderen PC getestet, es geht.

Du mußt den kompletten Text in eine Datei mit der Endung .bat oder .cmd kopieren und speichern.
Zum Test empfiehlt sich der Aufruf aus einem geöffneten CMD Fenster oder der Einbau von einem Pause Befehl zwischen Zeile 07 und 08.

Zur Erläuterung:
Zeile 6 übergibt alle gefundenen Dateien an die Subroutine :proc.
In proc wird :
- der Zielpfad gebildet (12) und
- geprüft ob er existiert - wenn nicht wird er eingerichtet (13)
- geprüft ob eine Datei des Namens existiert, wenn ja die Subroutine VersionInc aufgerufen.
wenn nicht der move ausgeführt.
In VersionInc wird
- der Dateiname von der ggfs vorhanden Nr separiert und die Nr erhöht.
- wenn der neue Name schon da ist, ruft die Subroutine sich mit diesem neuen Namen selbst (rekursiv) auf.
- die Datei mit der neuen Nr umbenannt.

Gruß
LotPings
Bitte warten ..
Mitglied: jo4884
14.04.2010 um 15:11 Uhr
Ich seh nur noch ?????. Vielleicht siehst du ja ob ich mir selbst ein ei ins Nest gelegt hab.

wenn ich es über ein Cmd Fenster öffne kommt folgender Fehler :

----"U:\Move\Input\A\test.txt"
Der Angegebene Pfadname ist ungültig.
Move "U:\Move\Input\A\test.txt" "Var:=U:\Move\Work"
Der Angegebene Pfadname ist ungültig.


::Move.bat::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off & setlocal EnableDelayedExpansion
Set SrcFld=U:\Move\Input
Set DstFld=U:\Move\Work
Pushd "%SrcFld%"
For /f "Delims=" %%A in ('Dir /B/S/A-D *') Do Call :Proc "%%~fA"
Popd
Goto :Eof
:Proc
echo ---- %1
Set "Var=%~dp1"
Set "DestPath=!Var:%ScrFld%=%DstFld%!"
If Not Exist "%DestPath%" MD "%DestPath%"
Set "Dest=%DestPath%%~nx1"
If Exist "%Dest%" Call:VersionInc "%Dest%"
echo Move %1 "%DestPath%"
Move %1 "%Dest%" >NUL
Goto :Eof
:VersionInc %1
Setlocal
Set Cnt=0
For /F "Tokens=1,2 delims=_" %%B in ("%~n1") Do (
Set Name %%B
Set /A Cnt=%%C+1
)
Set "NewName=%Name%_%Cnt%%~x1"
If Exist "%~dp1%NewName%" Call :VersionInc "%~dp1%NewName%"
Echo Ren %1 "%NewName%"
Ren %1 "NewName%"
Goto :Eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Bitte warten ..
Mitglied: LotPings
14.04.2010 um 15:38 Uhr
Hallo Jo,

kopieren heißt nicht selber engeben,
dabei passieren nämlich schon mal Buchstabendreher/Fehler wie du einiege eingebaut hast.
Zeile 12 SrcFld nicht ScrFld
Zeile 23 fehlt das Gleichheitszeichen.
Zeile 29 fehlt ein % vor NewName.

Außerdem wird der von dir gepostete Code besser lesbar wenn du die Tags we in der Formatierungshilfe angegeben verwendest.

Gruß
LotPings
Bitte warten ..
Mitglied: jo4884
14.04.2010 um 15:50 Uhr
Ich Danke Dir. Du bist mein Held.
Jetzt funktioniert es. Bin dir echt Dankbar,
auch für die Erläuterungen zwischendurch.
Die sind sehr Hilfreich fürs Verständnis.

Gruß und Dank

Jo
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Dateien verschieben und umbenennen
gelöst Frage von eazy-isiBatch & Shell12 Kommentare

Hallo zusammen, ich stehe vor folgender Herausforderung. Ich muss aus einem Verzeichnis Dateien in ein anderes Verzeichnis verschieben und ...

Batch & Shell

Batch Datei: PDF Dateien verschieben, umbenennen und löschen

gelöst Frage von F0rcehunterBatch & Shell4 Kommentare

Hallo zusammen, ich versuche mich gerade an einer Batch, die folgende Arbeitsschritte durchführen soll: In dem Ordner "C:\Produktdaten_zur_Uebernahme" befinden ...

Batch & Shell

Dateien verschieben die älter sind wie 1 Tag

gelöst Frage von pblackyBatch & Shell3 Kommentare

Hallo Forum, Ich suche gerade nach einer Lösung via batch in einem Ordner mit Unterverzeichnissen alle Dateien zu verschieben, ...

Batch & Shell

Dateien älter 2 Stunden verschieben

gelöst Frage von giadscBatch & Shell13 Kommentare

Hallo zusammen, Ich bin wieder mal am Verzweifeln. Es gibt zwar viele Einträge hier die in die Richtung gehen ...

Neue Wissensbeiträge
Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 4 StundenSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 14 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 TagWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server36 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...