steve85
Goto Top

Batch - Dateien mit bestimmter Größe ermitteln

Hi leutz.

Ich habe folgendes Problem.
Ich möchte aus einem Ordner alle Dateien kopieren, die 113 Bytes groß sind. Die Restlichen Dateien in diesem Ordner sind 97 Bytes groß und diese sollen gelöscht werden.

Habe folgendes versucht, aber dann kopiert er mir alle Dateien.

@echo OFF

ECHO.

IF c:\Test\STEUER*.* GTR 97 COPY c:\Test\STEUER*.* c:\Test\Aus\STEUER*.*

ECHO.

PAUSE


Danke für eure Hilfe.

Content-Key: 19015

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

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

Member: zingo
zingo Nov 10, 2005 at 08:35:57 (UTC)
Goto Top
Hy,

versuch doch mal das Verzeichnis mit einer for - Schleife auszulesen und nach z.b. '113 kb'
oder '97 Bytes ' suchen, danach mit 'ner if then elseif Schleife abfangen !

Ist ja nur mal so ein Vorschlag face-wink

Gruß ZINGO
Member: Biber
Biber Nov 10, 2005 at 09:11:05 (UTC)
Goto Top
@zingo Habe nur Handwerkliches hinzuzufügen face-smile

Moin Steve85,
machen würde das z. B. folgender Oneliner...
snipp Copy113Del97.bat
@for /F %%i in ('dir /A:<dummy>-D /b c:\test\steuer*.*') do @if %%~zi==113 (copy %%i c:\test\Aus) else (@IF %%~zi==97 del %%i)
snapp Copy113Del97.bat

... aber sinnvoll ist es IMHO nur begrenzt. Die 113-Byte -Steuer*.*-Dateien werden zwar irgendwo hinkopiert, aber das auch jeden Durchgang aufs Neue. Die werden ja nicht verschoben.
Ich würde eher die "113er" kopieren und dann alle Steuer*.*-Dateien löschen.

Aber egal, der Oneliner works as designed.
HTH Biber
Member: Steve85
Steve85 Nov 11, 2005 at 08:07:04 (UTC)
Goto Top
danke danke. werde es am montag direkt mal ausprobieren und euch dann sagen obs geklappt hat.
Aber trotzdem schon mal vielen dank.

MFG
Stefan
Member: Steve85
Steve85 Nov 14, 2005 at 09:47:25 (UTC)
Goto Top
@Biber

Habe die Zeile in den Editor eingetragen und gespeichert. beim ausführen passiert aber nichts.
brauche hilfe!!!

MFG Steve
Member: Biber
Biber Nov 14, 2005 at 10:14:18 (UTC)
Goto Top
Moin Steve,
na dann... sollten wir erstmal feststellen, wo es denn "nichts tut"..

1. CMD-Fenster aufmachen
2. >for /F %i in ('dir /A:<dummy>-D /b c:\test\steuer*.*') do @echo %i
Erstmal schauen, ob der Batch überhaupt Dateien findet.
Nein? Warum nicht? Was sagt denn "dir c:\test\Steuer*.*"
dir c:\test\Steuer*.*

3. Wenn die obige FOR..IN..DO_Anweisung klappt..
...erstmal die banale Überprüfung sind denn Dateien namens Steuer*.* mit den Größen 113 und 97 Byte da? Anhand der DIR-Ausgabe ist das ja feststellbar.

4.> for /F %i in ('dir /A:<dummy>-D /b c:\test\steuer*.*') do @if %~zi==113 (@echo copy %i c:\test\Aus) else (@IF %~zi==97 @echo del %i)

Ergebnis? Ggf. poste den Output.
Kann auch sein, dass ich irgendwo einen Denk-oder Tippfehler drin habe - ich habe mir ehrlich bin weder ein Verzeichnis "c:\test\" angelegt noch Dateien namens "Steu*.*" mit 113 oder 97 Byte angelegt zum Testen.

Grüße
Biber
Member: Steve85
Steve85 Nov 14, 2005 at 10:46:15 (UTC)
Goto Top
habe es so in den editor kopiert und gespeichert.
das fenster öffnet sich kurz, aber es passiert nichts.

FOR /F %i in ('dir/A:<dummy>-D /b c:\test\steuer*.*') do @if %~zi==113 (@echo copy %i c:\test\Aus) else (@IF %~zi==97 @echo del %i)

ich verzweifle langsam.

Punkt 1-3 hat geklappt.

MFG
STEVE
Member: Steve85
Steve85 Nov 14, 2005 at 10:46:18 (UTC)
Goto Top
Member: Biber
Biber Nov 14, 2005 at 11:01:13 (UTC)
Goto Top
Na, Steve85,
wenn Du bei sowas schon verzweifelst, hättest Du vielleicht doch Postbeamter werden sollen... *gg

Also: bitte vom CMD-Prompt aus abschicken:
for /F %i in ('dir /b c:\test\steuer*.*') do @if %~zi==113 @echo 113 Byte %i
for /F %i in ('dir /b c:\test\steuer*.*') do @if %~zi==97 @echo 97Byte: %i

und Ergebnis posten.
Lass Dir Zeit, ich mach erst Mittach.
Member: Steve85
Steve85 Nov 14, 2005 at 14:26:37 (UTC)
Goto Top
habe das kopierproblem ganz einfach gelöst. jetzt muss ich nur noch die 97er gelöscht haben. brauch dazu nen vorschlag.
mfg
Steve
Member: Biber
Biber Nov 14, 2005 at 19:16:03 (UTC)
Goto Top
Also, Steve
habe das kopierproblem ganz einfach gelöst.
Na prima.. wie war denn die einfache Lösung??

jetzt muss ich nur noch die 97er gelöscht haben. brauch dazu nen vorschlag.

Mein Vorschlag steht schon oben. Ich habe - entgegen meinen Gepflogenheiten - diesmal sogar den Oneliner getestet. Mach ich sonst selten, weil ich von meinen Bätchelchen eigentlich weiß, dass die zur Not auch unter Wasser laufen würden..
Habe also folgendes laufen lassen (nur Pfad/Namen und die Dateigröße geändert und ein "@echo" vor das copy/del):
::------snipp teststeve.bat
@for /f %%i in ('dir /b d:\temp\m*.txt d:\temp\ip*.txt d:\temp\*.vbs') do @echo %%~zi %%~fi
::@for /F %%i in ('dir /b c:\test\steuer*.*') do @if %%~zi==113 (copy %%i c:\test\Aus) else (@IF %%~zi==97 del %%i)
@for /F %%i in ('dir /b d:\temp\*.*') do @if %%~zi==293 (@echo copy %%i c:\test\Aus) else (@IF %%~zi==303 @echo del %%i)
::------snapp teststeve.bat
Output:
(=19:58:29 D:\temp=)
e:\teststeve.bat
293 D:\temp\Marian.txt
303 D:\temp\ipconfig.txt
293 D:\temp\dateofyear.vbs
70 D:\temp\Week.vbs
401 D:\temp\XCOP.VBS
copy dateofyear.vbs c:\test\Aus
del ipconfig.txt
copy Marian.txt c:\test\Aus

Was machen wir beide unterschiedlich??? Unter welcher Windows-Version läuft es bei Dir?

Bisschen ratlos
Biber
Member: Steve85
Steve85 Nov 15, 2005 at 12:14:44 (UTC)
Goto Top
Ich brauche jetzt nur noch die 97er löschen.
@Biber
wenn ich deine zwei zeilen in den editor kopiere und die pfade änder und das ganze abspeicher, rattert der beim ausführen der Batch die Dateien ab, jedoch passiert überhaupt nichts. naja.

mfg steve
Member: Biber
Biber Nov 16, 2005 at 08:34:48 (UTC)
Goto Top
Tja, steve85,
wollen wir das auf sich beruhen lassen? Oder den Fehler beheben?
mfG Biber
Member: Steve85
Steve85 Nov 22, 2005 at 15:03:49 (UTC)
Goto Top
habe alles versucht. jedoch krieg ich das nicht auf die reihe, die 97er zu löschen.
Member: Biber
Biber Nov 22, 2005 at 15:39:09 (UTC)
Goto Top
Tja, Steve,
habe noch mal meinen Ansatz gänzlichst überarbeitet, probier es bitte nochmal mit diesem hier:
::----snipp Copy113Del97redesigned.bat 
@for /F %%i in ('dir /A:-d /b c:\test\steuer*.*') do @if %%~zi==113 (copy /y %%~fi c:\test\Aus) else (@IF %%~zi==97 del %%~fi)   
::----snapp Copy113Del97redesigned.bat 
Wenn keine Änderung sichtbar ist, dann könntest Du vielleicht doch noch auf meine Fragen oben antworten. Manchmal muss man/frau eben abwägen zwischen Geheimhaltungsvorschriften und nötigen Informationen zur Fehlersuche. Und die potentielle Gefahr, dass ich das Wissen um Deine Windowsversion missbrauche, ist eher gering - vertrau mir.

Grüße Biber
Member: Steve85
Steve85 Nov 29, 2005 at 08:30:33 (UTC)
Goto Top
ich weiß nich was ich falsch mache. ich habe es in den editor kopiert und laufen lassen. nix passiert. HAbe win xp mit SP1.