ascendia
Goto Top

.txt Dateien größer 10 sollen nicht automatisch auch in den Ordner 1 kopiert werden

Guten Abend liebe administrator.de Gemeinde,

letzes Mal konntet ihr mir ja schon so gut bei meinem VBA Problem helfen und jetzt stehe ich wieder einmal auf dem Schlauch.
Ich weiß, dass man das Skript bestimmt auch hätte einfacher gestalten können, aber so tut es bisher fast was es soll. face-smile

Mein Problem bei diesem Skript ist, dass die .txt Dateien größer 10 automatisch in den Ordner Szenar11 und des Weiteren noch in die Ordner Szenar10, 11, 12, 13, 14, 15 kopiert werden.

Logischerweise haben diese ja im Ordner Szenar1 nichts verloren. :-P

Ich würde mich über Lösungsvorschläge und Denkanstöße Eurerseits freuen.
Gerne nehme ich auch Verbesserungsschläge entgegen.
Anbei habe ich euch den ganzen Code beigefügt:

@echo off & setlocal enabledelayedexpansion
title Sachen kopieren.

REM Name des USB-Sticks.
set stickname=test

REM Anzahl der Szenarien.
set anzszenar=15

REM Pfad vom Auslagerungsordner deklarieren.
set auslagerung=%userprofile%\Temp

REM Überprüfen ob Auslagerungsordner vorhanden ist, ansonsten erstellen.
if not exist %auslagerung% mkdir %auslagerung%

REM Anhand des USB-Sticks Namen Laufwerksbuchstaben etc. auslesen und zwischenspeichern.
wmic logicaldisk get volumename, deviceid, description | find "%stickname%" > %auslagerung%\laufwerk.txt  

REM Zeile des Laufwerksbuchstaben in Variable speichern.
for /f "delims=" %%i in (%auslagerung%\Laufwerk.txt) do (  
	set laufwerk=%%i
	)
	
REM Laufwerksbuchstaben Auslagerungsdatei löschen.
del /f %auslagerung%\Laufwerk.txt

REM Laufwerksbuchstaben aus Zeile herausfiltern.
set laufwerk=%laufwerk:~20,2%

REM Anhand der Anzahl der Szenarien Ordner erstellen, sofern diese noch nicht existieren.
for /l %%i in (1,1,%anzszenar%) do (
	if not exist E:\Test\PC\Szenar%%i mkdir E:\Test\PC\Szenar%%i
)
REM Die .txt Dateien in die richtigen Ordner kopieren & counten, wie viele Dateien kopiert wurden.
for /l %%i in (1,1,%anzszenar%) do (
	dir /b %laufwerk%\test | find "Sz%%i" > %auslagerung%\Sz%%i.txt  
		for /f "delims=" %%j in (%auslagerung%\Sz%%i.txt) do (  
			copy %laufwerk%\test\%%j E:\Test\PC\Szenar%%i\%%j >NUL && set /a counter=counter+1				
		)
	)
)

REM Den Auslagerungsordner löschen.
rmdir /s /q %auslagerung%

REM Ausgabe, wie viele Dateien kopiert worden sind.
echo Es wurden %counter% Dateien erfolgreich kopiert.
echo Das Skript wird jetzt beendet.

REM Nach 5 Sekunden das Skript beenden.
ping -n 5 localhost >NUL

Ich wünsche euch noch einen schönen Abend.

Gruß
Basti

P.S.: Mir ist leider kein besserer Titel eingefallen, ich hoffe man konnte verstehen was ich meinte und wenn nicht, dann wart ihr ja trotzdem so nett und habt mal draufgeklickt. face-smile

Content-Key: 280751

Url: https://administrator.de/contentid/280751

Printed on: April 25, 2024 at 13:04 o'clock

Member: Endoro
Endoro Aug 21, 2015 at 10:06:56 (UTC)
Goto Top
Hey,
ich hab mal etwas korrigiert. Es wird nicht tun, was du möglicherweise willst, was daran liegt, dass du deine Daten unzureichend beschrieben hast.
@echo off & setlocal disabledelayedexpansion
title Sachen kopieren.

REM Name des USB-Sticks.
set "stickname=test"  

REM Anzahl der Szenarien.
set /a anzszenar=15

REM LW initialisieren
set "laufwerk="  

REM Pfad vom Auslagerungsordner deklarieren.
set "auslagerung=%userprofile%\Temp"  

REM Überprüfen ob Auslagerungsordner vorhanden ist, ansonsten erstellen.
if not exist "%auslagerung%" mkdir "%auslagerung%"  

REM Laufwerksbuchstaben in Variable speichern.
for /f "skip=1" %%a in ('wmic logicaldisk where VolumeName^="%stickname%" get DeviceID') do if not defined laufwerk set "laufwerk=%%a"  

REM Die .txt Dateien in die richtigen Ordner kopieren & counten, wie viele Dateien kopiert wurden.
for /l %%i in (1,1,%anzszenar%) do (
	mkdir "E:\Test\PC\Szenar%%i" 2>NUL  
	copy "%laufwerk%\test\Sz%%i.TXT" "E:\Test\PC\Szenar%%i\" >NUL && set /a counter+=1  
)

REM Ausgabe, wie viele Dateien kopiert worden sind.
echo Es wurden %counter% Dateien erfolgreich kopiert.
echo Das Skript wird jetzt beendet.

REM Nach 5 Sekunden das Skript beenden.
ping -n 6 localhost >NUL
Gruß, Endoro
Member: ascendia
ascendia Aug 21, 2015 at 11:38:53 (UTC)
Goto Top
Hey Endoro, danke für deine Antwort!

Mit deinem Skript werden meine Dateien nicht kopiert.

Die Ordner werden erstellt, dass funktioniert alles gut,
jedoch findet kein Kopiervorgang statt.

Das mit dem Laufwerksbuchstaben auslesen funktioniert sehr gut, danke dafür!

Ich versuche am Montag mal ein bisschen weiter zu tüfteln, da ich das Wochenende unterwegs bin.
Sollten noch weitere Lösungsvorschläge und Denkanstöße reinflattern,
seid mir bitte nicht böse, wenn die Antwort erst folgende Woche von mir darauf kommt.

Wünsche Euch ein schönes Wochenende.
Gruß
Basti
Member: Clijsters
Clijsters Aug 21, 2015 at 12:04:04 (UTC)
Goto Top
Zitat von @ascendia:
Mit deinem Skript werden meine Dateien nicht kopiert.

Zitat von @Endoro:
Es wird nicht tun, was du möglicherweise willst, [...]
Member: ascendia
ascendia Aug 24, 2015 at 10:28:53 (UTC)
Goto Top
@ Clijsters:
Ich habs dann auch gesehen, nachdem ich nochmal drüber gelesen habe, aber danke.

@ Endoro:
Es gibt mehrere Dateien, mit dem Namen SAP1_Sz1.txt, SAP2_Sz1.txt usw.
Dann gibts es wieder mehrere Dateien mit SAP10_Sz2.txt, SAPxx_Szx.txt.

Diese Dateien sollen anhand des Szx in den Ordner Szenarx kopiert werden.
Derzeit lese ich ja alle Dateien mit Szx aus und schreibe dies in die entsprechende Textdatei,
wo ich die dan wieder rauslese und anhand dieser Information in die Ordner kopiere.

Wir das dann größer 10, kopiert er mir ja auch größer 10 in die Textdatei für Sz1,
weil ich ja nach "Sz1" suche und das ja auch in Sz größer 10 vorhanden ist.

Sprich, wenn ich SAP1-12_Sz1.txt habe, dann sollen diese 12 Dateien in den Ordner

E:\Test\PC\Szenar1 kopiert werden.

SAP1-15_Sz2.txt in den Ordner E:\Test\PC\Szenar2 etc.

Ich hoffe, dass ich dir das Problem jetzt etwas besser schildern konnte.

Ich freue mich auf eine Rückmeldung Eurerseits und wünsche noch einen schönen Montag!

Gruß
Basti