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

Variable Dateien verschieben nach Abgleich

Frage Entwicklung Batch & Shell

Mitglied: pingu256

pingu256 (Level 1) - Jetzt verbinden

19.11.2008, aktualisiert 18:37 Uhr, 3717 Aufrufe, 7 Kommentare

Hi,

hat jemand einen Tipp für mich wie ich folgendes Problem lösen kann:

In einem Verzeichnis c:\data werden nacheinander (Abstand ca. 2-5 Min.) immer zwei Dateien abgelegt die den gleich Dateinamen aber eine andere Endung haben.

Beispiel:

12345.pdf und 12345.pd$

oder

54321.pdf und 54321.pd$

Wie kann ich einen Scheduler programmieren der mir jede Minute über dieses Verzeichnis läuft und nachschaut ob ein Datenpaar vorhanden ist. Wenn beide Dateien da sind sollen diese in ein anderes Verzeichnis verschoben werden.

Der Dateiname ändert sich jedes mal nur die die Endung ist jedes mal gleich (pdf & pd$).

Gruß
Pingu256
Mitglied: Ren
19.11.2008 um 16:03 Uhr
Skizze:
01.
@echo off 
02.
set "verzeichnis=e:\pdfs" 
03.
set "ziel=e:\ziel" 
04.
:loop 
05.
FOR /F "delims=" %%i IN ('dir %verzeichnis%\*.pdf /b') DO call :handle "%%i" 
06.
ping -w 60000 1.1.1.1 -n 1 >nul 
07.
goto :loop 
08.
 
09.
:handle 
10.
set "file=%~1" 
11.
set "file2=%~n1.pd$" 
12.
if exist "%verzeichnis%\%file2%" copy "%verzeichnis%\%file2%" "%ziel%\%file2%" & copy "%verzeichnis%\%file%" "%ziel%\%file%" & goto :eof 
13.
goto :eof 
14.
 
15.
 
16.
:ende
Problem: wenn es mehr Dateien werden, werden alle immer kopiert. ;)
Zitat von pingu256:
nachschaut ob ein Datenpaar vorhanden ist. Wenn beide Dateien da sind sollen diese in ein anderes Verzeichnis verschoben werden.
Das sollte die Batch aber tun...
Bitte warten ..
Mitglied: bastla
19.11.2008 um 16:15 Uhr
@Ren
Problem: wenn es mehr Dateien werden, werden alle immer kopiert. ;)
... außer, es würde (wunschgemäß) verschoben ...

Abgesehen davon wäre anzumerken, dass ein "dir /b" (ohne "/s") keinen vollständigen Pfad, sondern nur die Dateinamen liefert - insofern wäre ein
pushd "%verzeichnis%"
vorneweg und das zugehörige
popd
am Ende der einfachere Weg.

Grüße
bastla
Bitte warten ..
Mitglied: Ren
19.11.2008 um 16:21 Uhr
Ich hatte kopiert gelesen, ich bin schon müde. Aber das sollte ja kein Ding sein, ersetzt man copy durch move, wenn man sich sicher ist, dass im Zielverzeichnis nichts kaputt gehen kann, move /y. Sonst müsste man halt vorher noch nachsehen, ob die Datei schon existiert.
01.
@echo off 
02.
set "verzeichnis=e:\pdfs" 
03.
set "ziel=e:\ziel" 
04.
:loop 
05.
FOR /F "delims=" %%i IN ('dir %verzeichnis%\*.pdf /b') DO call :handle "%%i" 
06.
ping -w 60000 1.1.1.1 -n 1 >nul 
07.
goto :loop 
08.
 
09.
:handle 
10.
set "file=%~1" 
11.
set "file2=%~n1.pd$" 
12.
if exist "%verzeichnis%\%file2%" move /y "%verzeichnis%\%file2%" "%ziel%\%file2%" & move /y "%verzeichnis%\%file%" "%ziel%\%file%" & goto :eof 
13.
goto :eof 
14.
 
15.
 
16.
:ende
Bitte warten ..
Mitglied: bastla
19.11.2008 um 16:25 Uhr
@Ren
"move" mit "/y" ist nur am Commandprompt erforderlich - in Batch wird automatisch überschrieben.

Grüße
bastla
Bitte warten ..
Mitglied: Ren
19.11.2008 um 16:42 Uhr
aha. Man lernt täglich etwas neues!
Bitte warten ..
Mitglied: pingu256
19.11.2008 um 18:37 Uhr
Geil vielen Dank!!! Läuft !!!
Bitte warten ..
Mitglied: pingu256
03.02.2009 um 11:53 Uhr
Zitat von Ren:
Ich hatte kopiert gelesen, ich bin schon müde. Aber das sollte ja
kein Ding sein, ersetzt man copy durch move, wenn man sich sicher ist,
dass im Zielverzeichnis nichts kaputt gehen kann, move /y. Sonst
müsste man halt vorher noch nachsehen, ob die Datei schon
existiert.
01.
> @echo off 
02.
> set "verzeichnis=e:\pdfs" 
03.
> set "ziel=e:\ziel" 
04.
> :loop 
05.
> FOR /F "delims=" %%i IN ('dir %verzeichnis%\*.pdf 
06.
> /b') DO call :handle "%%i" 
07.
> ping -w 60000 1.1.1.1 -n 1 >nul 
08.
> goto :loop 
09.
>  
10.
> :handle 
11.
> set "file=%~1" 
12.
> set "file2=%~n1.pd$" 
13.
> if exist "%verzeichnis%\%file2%" move /y 
14.
> "%verzeichnis%\%file2%" "%ziel%\%file2%" & 
15.
> move /y "%verzeichnis%\%file%" "%ziel%\%file%" 
16.
> & goto :eof 
17.
> goto :eof 
18.
>  
19.
>  
20.
> :ende 
21.
> 



Hi,

hat jemand ne Idee wie ich das Script am geschicktesten verändere wenn ich mehrere Verzeichnisse überwachen möchte?


Aktuell sieht der Code so aus und ich überwache Verzeichnis 1 .. hinzu sollen Verzeichnis 2 bis 7 auch überwacht werden sowie die Dateien entsprechen kopiert werden

01.
@echo off 
02.
set "verzeichnis=E:\pool\archiv\1" 
03.
set "ziel=x:\ep1\010\" 
04.
set "ziel2=e:\pool\ablage\1" 
05.
:loop 
06.
FOR /F "delims=" %%i IN ('dir %verzeichnis%\*.pdf /b') DO call :handle "%%i" 
07.
ping -w 10000 1.1.1.1 -n 1 >nul 
08.
goto :loop 
09.
 
10.
:handle 
11.
set "file=%~1" 
12.
set "file2=%~n1.pd$" 
13.
if exist "%verzeichnis%\%file2%"  
14.
	copy /y "%verzeichnis%\%file%" "%ziel%\%file%" &  
15.
	copy /y "%verzeichnis%\%file2%" "%ziel%\%file2%" &  
16.
	move /y "%verzeichnis%\%file%" "%ziel2%\%file%" &  
17.
	move /y "%verzeichnis%\%file2%" "%ziel2%\%file2%" &  
18.
	goto :eof 
19.
	goto :eof 
20.
:ende 
21.
 
Danke!!!
Gruß

pingu256
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...