reinhr
Goto Top

TXT Dateien nur verschieben wenn größer 0kb

Hallo Forum,

ich habe eine Buchungssoftware die pro Buchung eine Transaktionsdatei (TXT) liefert.
Nach erfolgreicher Buchung wird automatisch eine TXT-Datei in C:\TMP geschrieben.
Unmittelbar danach wird eine move.bat ausgeführt.
Diese move.bat dient dazu die Dateien auf den Server zu schieben.

MOVE.BAT
C:\Programme\...\Wait.exe 2
move c:\TMP\*.* C:\LIVE\
C:\Programme\...\Wait.exe 2
\\nvgm028\SYS\Datei_Aus_LIVE_Holen.bat

Mein Problem ist, dass die verschobenen TXT-Dateien manchmal (wirklich selten), auf dem Server mit 0kb ankommen.
Von der WAIT.EXE möchte ich weg kommen. Das ist nicht die Lösung!

Ich möchte, das nur die TXT-Dateien verschoben werden, die größer 0kb sind.
Somit sollte sicher gestellt sein, dass nur Dateien mit Inhalt, also größer 0kb, dort hin verschoben werden.

Hat hier jemand eine Lösung für mich?

Danke und Gruß
Roland

Content-Key: 86365

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

Printed on: April 19, 2024 at 18:04 o'clock

Member: paulepank
paulepank Apr 24, 2008 at 19:15:27 (UTC)
Goto Top
Hallo Roland,

kann so aussehen:

for /f %%i in ('dir c:\tmp /b /a-d') do if %~zi gtr 0 move "c:\tmp\%%i" c:\LIVE\  

cu paulepank
Member: reinhr
reinhr Apr 24, 2008 at 19:45:18 (UTC)
Goto Top
Hallo paulepank,

sieht ja einfach aus - geht aber nicht!
Muß ich noch was verändern?
Eigentlich nicht oder?

cu Roland
Member: bastla
bastla Apr 24, 2008 at 20:22:55 (UTC)
Goto Top
Hallo reinhr!

Da ist paulepank ein "%"-Zeichen von der Schippe gesprungen:
for /f %%i in ('dir c:\tmp /b /a-d') do if %%~zi gtr 0 move "c:\tmp\%%i" c:\LIVE\  

Grüße
bastla
Member: paulepank
paulepank Apr 24, 2008 at 20:29:06 (UTC)
Goto Top
Hallo Bastal,

leider Ja face-sad

aber es geht bei mir mit der Angabe von c:\tmp in ('dir c:\tmp /b /a-d') auch nicht.
Hatte es ohne Verzeichnisangabe am Prompt getestet.

deshalb mein Workaround:
cd c:\tmp
for /f "delims=" %%i in ('dir /b /a-d') do if %%~zi gtr 0 move "c:\tmp\%%i" c:\LIVE\  

cu paulepank und Sorry
Member: bastla
bastla Apr 24, 2008 at 20:40:47 (UTC)
Goto Top
@paulepank
Ich tendiere eher zu "pushd" / "popd" - damit wird auch (bei Bedarf) das Laufwerk gewechselt (ginge aber auch mit "cd /d").
Wenn nicht angenommen werden muss, dass es Unterverzeichnisse mit ".txt" gibt, reicht auch:
for %%i in (C:\tmp\*.txt) do if %%~zi gtr 0 move "%%~fi" c:\LIVE\  

Grüße
bastla
Member: paulepank
paulepank Apr 24, 2008 at 21:12:22 (UTC)
Goto Top
@bastla,
ja das ist besser.
Wobei es mich doch interessiert , wieso das ('dir c:\tmp /b /a-d') keine Größenangabe listet.

cu paulepank
Member: bastla
bastla Apr 24, 2008 at 21:22:00 (UTC)
Goto Top
@paulepank

Ein
dir c:\tmp /b /a-d
(ohne /s) liefert nur den reinen Dateinamen als "Text", aber nicht ein "Dateiobjekt" - als Pfad (falls benötigt) wird der des aktuellen Verzeichnisses angenommen (kannst Du zB bei Ausgabe eines "%%~fi" sehen).

Grüße
bastla
Member: paulepank
paulepank Apr 24, 2008 at 21:59:57 (UTC)
Goto Top
@bastla

Danke für die Erklärung

@Roland

such dir eine Lösung raus.

meine korrigierte Version ist dann:
for /f "delims=" %%i in ('dir c:\tmp /b /a-d /s') do if %%~zi gtr 0 move "%%i" c:\LIVE\  

cu paulepank und gute Nacht
Member: Biber
Biber Apr 26, 2008 at 00:36:04 (UTC)
Goto Top
[Haarspaltemodus an]
@reinhr
Wenn wirklich nur Datei größer 1 KB kopiert werden sollen, dann muss der Vergleich von "gtr 0" auf "gtr 1024" geändert werden.

@bastla
Wenn nicht angenommen werden muss, dass es Unterverzeichnisse mit ".txt" gibt, reicht auch:
for %%i in (C:\tmp\*.txt) do if %%~zi gtr 0 move "%%~fi" c:\LIVE\
Genauer gesagt, es ist vollkommen egal, ob s auch Unterverzeichnisse gibt, die "whatever.txt" heißen
Denn die haben als %[%]~zi-Größenangabe bei M$ immer den Wert 0.
[/Haarspaltemodus aus]

Von daher tendiere ich eindeutig zu dieser von Dir vorgeschlagenen Variante.

Grüße
Biber
Member: bastla
bastla Apr 26, 2008 at 07:59:31 (UTC)
Goto Top
@Biber
Und um das Ganze abzurunden (und mich endgültig zu korrigieren): Ein einfaches "for" liefert ohnehin nur Dateien ...

Grüße
bastla
Member: paulepank
paulepank Apr 26, 2008 at 08:00:31 (UTC)
Goto Top
[das vorletzte Wort haben]
@Biber
[Haarspaltemodus an]
@reinhr
Wenn wirklich nur Datei größer 1 KB kopiert werden sollen, dann muss der
Vergleich von "gtr 0" auf "gtr 1024" geändert werden.

in der Nacht hast du wohl ein kleines Becks zu viel ... face-smile

in der Titelzeile steht doch deutlich größer 0kb

[/das vorletzte Wort haben]

cu paulepank