Befehl
Befehl soll alle Dateien kleiner als X in Ordner X verschieben
Hallo,
ich möchte in einem Ordner alle Dateien die kleiner als 1KB sind, in einen separaten Ordner verschieben. Wenn ich nun folgenden Befehl über die DOS-Konsole eingebe
for /R D:\log\ %i in (H*) do @if %~zi LSS 1 @Move %~i D:\log\schrott\
werden auch alle Dateien kleiner 1KB verschoben. Speichere ich nun diesen Befehl in einer Datei clean.bat
Inhalt clean.bat:
@echo on
for /R D:\log\ %i in (H*) do @if %~zi LSS 1 @Move %~i D:\log\schrott\
und führe diese aus funktioniert es schon nicht mehr.
Wo liegt mein (Denk)-Fehler?
Gruß und vorab Danke
Hallo,
ich möchte in einem Ordner alle Dateien die kleiner als 1KB sind, in einen separaten Ordner verschieben. Wenn ich nun folgenden Befehl über die DOS-Konsole eingebe
for /R D:\log\ %i in (H*) do @if %~zi LSS 1 @Move %~i D:\log\schrott\
werden auch alle Dateien kleiner 1KB verschoben. Speichere ich nun diesen Befehl in einer Datei clean.bat
Inhalt clean.bat:
@echo on
for /R D:\log\ %i in (H*) do @if %~zi LSS 1 @Move %~i D:\log\schrott\
und führe diese aus funktioniert es schon nicht mehr.
Wo liegt mein (Denk)-Fehler?
Gruß und vorab Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 38345
Url: https://administrator.de/contentid/38345
Ausgedruckt am: 23.11.2024 um 04:11 Uhr
3 Kommentare
Neuester Kommentar
In ner Batch Datei mach %% statt %.
also:
@echo on
for /R D:\log\ %%i in (H*) do @if %%~zi LSS 1 @Move %%~i D:\log\schrott
miniversum
also:
@echo on
for /R D:\log\ %%i in (H*) do @if %%~zi LSS 1 @Move %%~i D:\log\schrott
miniversum
Moin HeinerTown,
das Entscheidende hat miniversum schon gepostet.
Die kleineren Denkfehler, die mir noch aufgefallen sind:
"LSS 1" heißt nicht "kleiner 1 KB", sondern "kleiner 1 Byte".
Also ändern in "LSS 1024"
Dann sieht der Oneliner so aus:
Ein Verbesserungsvorschlag noch - nicht alles unterhalb von D:\Log durchsuchen und nach D:\log\schrott verschieben.
Das ist unbeabsichtigt rekursiv.
Entweder:
-oder-
Gruß
Biber
das Entscheidende hat miniversum schon gepostet.
Die kleineren Denkfehler, die mir noch aufgefallen sind:
@echo on
... würde ich weglasssen. Oder in "@echo off" ändern, wenn ich kein ECHO haben willfor /R D:\log\ %%i in (H*) do @if %%~zi LSS 1 @Move %%~i D:\log\schrott
Nicht ganz.."LSS 1" heißt nicht "kleiner 1 KB", sondern "kleiner 1 Byte".
Also ändern in "LSS 1024"
Dann sieht der Oneliner so aus:
@for /R D:\log\ %%i in (H*) do @if %%~zi LSS 1024 @move %%~i D:\log\schrott
Ein Verbesserungsvorschlag noch - nicht alles unterhalb von D:\Log durchsuchen und nach D:\log\schrott verschieben.
Das ist unbeabsichtigt rekursiv.
Entweder:
@for /R D:\log\ %%i in (H*) do @if %%~zi LSS 1024 @move %%~i D:\log\schrott\Fastleer_*.*
@for /R D:\log\ %%i in (H*) do @if %%~zi LSS 1024 @move %%~i E:\log\schrott
Gruß
Biber
Gruß und vorab Danke
...von daher denke ich, es kommt nichts mehr...Ich setze den Beitrag auf "Gelöst".
Biber
P.S. Für alle, die es noch nicht wissen: Ich mag diese "Danke-im-Voraus-Formulierung" nicht.
Heißt in 90% der Fälle: "Ich werde mich nie wieder melden und nicht sagen, ob es geholfen hat".
[Edit 7.8.2007] HeinerTown hat es aber heute pr PN bestätigt: Beitrag ist gelöst.[/Edit]