Hi,
ich bin gerade dabei, ein kleines Tools zu schreiben das mir diverse
Datei auf der Festplatte C: in einem Ordner verschiebt. Sin und zweck
soll es sein, dass temporäre Datein entfernt werden. Um nicht
versehentlich falsche daten gelöscht werden dachte ich eben erst
verschieben und dann nach Überprüfung löschen...
move "c:/"*.tmp c:/move/ >c:/move/verschoben/%date%.txt
Nun gibt es 2 Problem die nicht so funktionieren.
Wenn ich eine Datei erstelle test.tmp und das Script darauf anpasse
move "c:/"*.tmp c:/move/ >c:/move/verschoben/%date%.txt
Dann wird die Datei test.tmp verschoben. Die Datei mit dem Datum wird
auch erstellt, aber diese bleibt leer und es ist kein Eintrag drin. Was
mache ich da falsch?
So, das andere ist, dass wenn ich versuche c:/*.tmp zu löschen, dass
diese auf C: liegen muss. Wie kann ich die Ordner und Unterordner
durchsuchen lassen?
LG Nils
Du verwendest kein DOS, sondern den Befehlsprozessor von Windows. Dieser
ist recht gut dokumentiert, die einzelnen Befehle, ihre Optionen und
auch Beispiele sind auch in der integrierten Hilfe beschrieben.
move /?
del /?
sollten mehr über sich verraten.
versuch mal
move c:\*.tmp c:\move\ > "c:\move\verschoben\%date%.txt"
(habs nicht getestet)
>So, das andere ist, dass wenn ich versuche c:/*.tmp zu löschen, dass>diese auf C: liegen muss. Wie kann ich die Ordner und Unterordner>durchsuchen lassen?
???
Schreib nochmal genauer was du machen willst. Willst du auf c:\
tmp-Dateien löschen oder in Unterordnern?
Geht leider auch nicht... Ich habe schon den ganzen abend mit Klammern
u.ä. rumhantiert. Das angelegte Textfile bleibt aber leer.
Ich möchte alle Dateien auf C: überprüfen lassen ob diese mit .tmp enden
und wenn ja, dann verschieben.
habs bei mir getestet, es funzt:
hab 2 Dateien mit der Endung tmp auf c:\, Ordner move und verschoben
erstellt,
win+r gedrückt, die oben von mir gepostete zeile eingefügt
Ergebnis: Dateien verschoben und in txt-file die 2 dateien eingetragen.
Mit dir /s *.tmp kannst du dir alle tmp-Dateien anzeigen lassen.
Hab es jetzt so gelöst...
md c:\move\%date%\del
move "c:\"*.tmp "c:\move\%date%\" >"c:\move\%date%\del\geloescht.txt
Das script wird dann beim beenden von Windows ausgeführt da Windows auf
manche Datein noch Zugriffsrechte hat.
Bei mir geht es jedenfalls nicht...
Den Rest muss ich mal weiter testen und probieren
Mich interessiert das auch. Speziell noch mit der Erfordernis, daß die
Dateien in alphanumerischer Reihenfolge (also gleich noch sortiert)
verschoben werden. Denn in der zufälligen Reihenfolge, wie die auf der
Platte liegen will ich das nicht haben!
Mei mir funktioniert zwar der Befehl:
Doch die Dateien werden bunt durcheinander verschoben.
h:\dcim\100casio\CIMG0049.JPG
h:\dcim\100casio\CIMG0050.JPG
h:\dcim\100casio\CIMG0028.JPG
h:\dcim\100casio\CIMG0051.JPG
h:\dcim\100casio\CIMG0052.JPG
h:\dcim\100casio\CIMG0036.JPG
Wie kann man die Sortierung erzwingen?
Ronald schrieb:> Mich interessiert das auch. Speziell noch mit der Erfordernis, daß die> Dateien in alphanumerischer Reihenfolge (also gleich noch sortiert)> verschoben werden. Denn in der zufälligen Reihenfolge, wie die auf der> Platte liegen will ich das nicht haben!
Ich glaube nicht, dass das geht. Im Inhaltsverzeichnis eines Ordners
sind die Einträge regelmäßig unsortiert gespeichert. Erst die
Anzeigefunktion des "Explorers" sortiert die Namen. Und wie der Benutzer
das dann sieht, dafür gibt es doch die Einstellungen.
Es sollte aber gehen, da sich eine Dateiliste erzeugen und diese
sortieren läßt. Würde man jede Datei einzeln von Hand verschieben,
ergäbe das auch das Ziel.
Für AmigaOS kann ich jedenfalls eine batch-datei schreiben, die das
gewünschte erreicht.
Vereinfacht ohne Fehlerabfragen sähe das etwa so aus:
1
list LW:path lformat "move %s%s ZielLW:path" >movefiles.bat
2
sort movefiles.bat
3
execute movefiles.bat
4
delete movefiles.bat
List ist dabei ein ähnlicher Befehl zu DIR mit anders formatierbaren
Ausgaben. LFORMAT erlaubt die Festlegung des Zeilenaufbaus, so daß sich
damit auch HTML-Listen erzeugen ließen. %s%s ist der Platzhalter für
Pfad+Dateiname, %s einzeln nur Dateiname.
z.B. mit
list LW:path lformat "(a href-%s%s)%s(/a)(br)" >filelist.html ließe sich
eine HTML-Liste erzeugen deren Zeilen dann so aussehen:
(a href-Pfad/Dateiname.ext)Dateiname.ext(/a)(br)
Wie man soetwas mit MSDOS erreichen kann weis ich nicht. Deßhalb frage
ich ja. (Ich mußte hier runde Klammern nehmen, weil html verboten ist.)
MyDefrag bietet ja auch eine Möglichkeit beim defragmentieren die
Dateien alphabetisch zu sortieren. Warum also nicht gleich beim
Kopieren/Verschieben sortiert übergeben?
Ronald schrieb:> MyDefrag bietet ja auch eine Möglichkeit beim defragmentieren die> Dateien alphabetisch zu sortieren.
... Ja das erhöht bestimmt die Zugriffsgeschwindigkeit, dann muß der PC
nicht so lange suchen weil alles so unordentlich rumliegt ...
> Warum also nicht gleich beim> Kopieren/Verschieben sortiert übergeben?
Was soll das den bringen? Nur "der Ordnung halber" oder was? Dem PC ist
es doch völlig egal in welcher Reihenfolge du das kopierst...
Ansonsten kannst du auch mit DIR eine Dateiliste "sortiert" ausgeben
lassen, in eine Datei schreiben und dann zeilenweise lesen und für eine
kopieroperation verwenden. Google doch einfach mal nach "Batchfile" oder
"dir commandline options"...
Sven schrieb:> Muss es denn zwingend auf den Windows Konsolenbefehlen basieren?
Worauf denn sonst, wenn man mit Windows arbeitet?
Läubi schrieb:
> Was soll das den bringen? Nur "der Ordnung halber" oder was?
Ja und wegen der (De)Fragmentierung.
Liegen die Dateien wild verstreut auf der Platte, dann werden beim
löschen lauter kleine Löcher frei, wenn man einen ganzen Ordner löscht.
Liegen sie Sortiert for, wird ein größere, zusammenhängender Bereich
frei.
Diese viele kleinen Lücken werden doch immer zuerst von vorne her
gefüllt mit neuen Dateien, auch wenn die viel größer sind als rein paßt.
Das führt immer wieder zu neuen Fragmentierungen. auch nach der
Defragmentierung von windows, was ja nur die dateien defragmentiert, für
die gerade ausreichend große Lücken zu finden sind, reißt aber wieder
die kleinen Lücken auf und füllt die Platten nie sinnvoll. Die Funktion
SortbyName() von Mydefrag bringt zwar diese alphanumerische Ordnung
rein, braucht aber pro GB rund eine Stunde. Bei einer fast vollen
Partition von 32 GB dauert das also mehr als einen Tag! Bei meiner 360
GB Partition wohl eine ganze Woche.
> Ansonsten kannst du auch mit DIR eine Dateiliste "sortiert" ausgeben
lassen,...
Das weis ich. Auch das man das auf die reinen Pfade:Dateinamen (ohne
Zusatzinfos) und sortiert schreiben kann. Soweit bin ich schon. doch wie
bekomme ich das hin das vor diesen Dateinamen der Befehl "move "
eingefügt wird und dahinter das " ZIEL:"? Damit ich nicht jedesmal alles
von hand einfügen muß!?
Diese neue Datei soll dann als Batchdatei ausgeführt werden können, und
nicht jede Zeile Von hand kopiert werden.
Oder soll ich das etwa lieber vom Amiga-Emulator aus machen? Das ginge,
wenn ich einstelle "alle Windowslaufwerke einbinden".
Sowas habe ich früher schon mal gemacht um aus allen HTML-Dateien in
beliebigen Unterverzeichnissen der Windowspartitionen mit unbestimmten
Dateinamen auf einen Rutsch alle unerwünschten HTML-ads oder
JavaScript-Teile zu entfernen. Ohne daß ich dafür jede Datei einzeln
öffnen und die Stellen suchen und ersetzen mußte.
Mit AmigaDOS geht vieles sowas problemlos, mit Linux(en) wohl auch.
Ich hoffe aber das auch mit MSDOS machen zu können.
Ronald schrieb:> Worauf denn sonst, wenn man mit Windows arbeitet?
Nunja, bei c# hast du z.B. einen Namespace mit diversen Klassen und
Methoden für den Dateizugriff mit denen man solche Sortier- und
Kopieraufgaben mit Leichtigkeit erledigen kann.
Sicherlich gibt es auch für fast alle anderen Programmiersprachen solche
Bibliotheken.
Ronald schrieb:> Läubi schrieb:>> Was soll das den bringen? Nur "der Ordnung halber" oder was?> Ja und wegen der (De)Fragmentierung.> Liegen die Dateien wild verstreut auf der Platte, dann werden beim> löschen lauter kleine Löcher frei, wenn man einen ganzen Ordner löscht.> Liegen sie Sortiert for, wird ein größere, zusammenhängender Bereich> frei.
Autsch Autsch Autsch... wer erzählt den so einen Quatsch?
Das hat überhaupt nix mit dem Dateinamen zu tun und was du oder ich
vielleicht unter einer Alphabetischen Ordnung verstehen!
Wenn du es nur deshalb machen willst vergiss es. Optimieren (auch im
Sinne der Fragmentierung) kannst du höchstens indem du dein Backup
packst (und ggf. komprimierst) weil dann effektiv weniger Cluster belegt
werden.
Auch der rest bzgl Windows Defrag ist wohl eher Marketing von MyDefrag
als den da wirklich was hinter steht...
>> Ansonsten kannst du auch mit DIR eine Dateiliste "sortiert" ausgeben> lassen,...> Das weis ich. Auch das man das auf die reinen Pfade:Dateinamen (ohne> Zusatzinfos) und sortiert schreiben kann. Soweit bin ich schon. doch wie> bekomme ich das hin das vor diesen Dateinamen der Befehl "move "
Hallo Läubi,
ich sehe jetzt keinen Sinn darin tiefer über Defragmentierung zu
Streiten. Das Script, was ich will, ist auch nicht zur defragmentierung
gedacht, sondern soll bei einem leeren Datenträger die Dateien gleich
sortiert schreiben. Nicht mehr nicht weniger.
Und dein allerletzter Absatz scheint den Code zu enthalten, den ich
suche: zeilenweise Zeichenketten bearbeiten. Dankeschön ;)
Aber die Zeile erscheint umgebrochen. Ist den der Teil:
1
for /f "eol= tokens=* delims= usebackq" %%i in (%TEXT_T%) do (
als EINE Zeile zu verstehen?
Und dann nächste Frage: sollte die Zeile nicht eigentlich so aussehen?
1
echo move %%i <ZIEL-Platzhalter>
%%i steht wohl für jede Zeile.
Da ich in der Batchdatei die zwei Parameter auswerten will, die in
Commandozeile übergebenwerten soll der Aufruf ja etwa so aussehen
verschiebe.bat [Quelle:] [Ziel:]
ergäbe den Inhalt am Anfang:
1
@ECHO OFF
2
:anfang
3
IF "%1"=="" GOTO ende
4
IF "%2"=="" GOTO fehler
5
DIR /b %1 > blabla.bat
6
...(
7
echo move %%i %2
8
)
9
...
10
call blabla.bat
11
(ewentuell weitere Befehle)
12
:fehler
13
echo "2. Parameter fehlt!"
14
:ende
15
echo fertig.
16
EOF
Bin ich damit jetzt auf dem richtigen Weg?
Nach batchfiles habe ich gegoogelt und bin auf diese Seite gestoßen.
In C# will ich das auch nicht schreiben, weil ich weder einen compiler
habe, noch weis wie das zu schreiben sei.
(und wie WinXP defragmentiert kann man ja zuschauen. Das mit den vielen
buntern senkrechten Strichen... Dazu braucht man kein Marketing von
Fremdanbietern.;))
Schön das du es hinbekommen hast. Ich will mich keineswegs mit dir
streiten oder dich überzeugen, ich kann dir nur sagen das es technisch
keinen Unterschied macht in welcher Reihenfolge du kopierst (bezogen auf
die Defragmentierung) und eine (für Menschen geordnete) Dateilisten dem
Computer ziemlich egal ist ;)
Das einzige wo es (marginal) etwas bringen würde wäre, wenn dein
Verhalten so wäre das du alle Dateien kopierst, und dann (alphabetisch
von hinten) eine bestimmte Anzahl löscht.
Defragmentieren bringt eh nur auf Festplatten etwas, bei USB-Sticks oder
CF/SD Karten ist es eher schädlich und hat keinen Nutzen.
> und wie WinXP defragmentiert kann man ja zuschauen.> Das mit den vielen buntern senkrechten Strichen
Ja das gabs auch schon unter MS-Dos es beruhigt auf jedenfall ungemein
:P
Trotzdem verfolgt XP (je nach Einstellung) sowieso eine andere
Strategie:
Häufig benutzte Dateien werden in Bereiche ausgelagert die schneller
zugreifbar sind, und das ist in Grenzen auch sinnvoll.
Das Defragmentieren nach Alphabet hat aber nun überhauptkeine Vorteile
und dauert nur unötig lange (wei du schon festgestellt hast). Aber nunja
wenns glücklich macht wieso nicht ;)
> Häufig benutzte Dateien werden in Bereiche ausgelagert die schneller> zugreifbar sind, und das ist in Grenzen auch sinnvoll.
Aehm, welche Bereiche der Festplatte sind schneller zugreifbar als
andere?
Zwie Blum schrieb:> Aehm, welche Bereiche der Festplatte sind schneller zugreifbar als> andere?
Wenn die Daten "Übereinander" an gleicher Postion auf den Plattentellern
liegen z.B. (wohl eher vernachlässigbar und selten).
Aber eine HD arbeitet mit konstanter Umdrehungsgeschwindigkeit folglich
ist es nicht egal ob die Daten innen oder außen auf den "Tellern"
liegen, das kann man sogar testen:
http://www.chip.de/artikel/PC-Diagnose-und-Tuning-6_12863836.html
Deshalb haben alle HDs auch eine mittlere Zugriffsgeschwindigkeit, bei
einer Audio CD hingegen regelt der Player (zumindest früher) die
Drehzahl je nach Postion nach sodass eine konstante Bitrate erreicht
wird. Bei Schallplatten wird das einfach dadurch ausgeglichen das halt
die "Länge" der "Bits" unterschiedlich ist innen und außen.
Ansonsten haben alle FP sowieso einen Wegoptimierungsalgorithmus drinne
sodass es halt bei nicht ausschließlich sequentiellem Zugriff eh
Glückssache ist ob dies (spürbare) Auswirkungen hat.
Ach nun wird ja doch über Defragmentierung diskutiert, obwohl es nicht
zum eigentlichen Thema paßt und ich mit der Erwähnung keine Diskusion
darüber anstoßen wollte.
Und das mit der alphabetischen Sortierung von MyDefrag kann und wird in
Bereiche Unterteilt: NTFS-Files, Bootfiles usw. und innerhalb dieser
kann sortiert abgelegt werden. Einfach nur defragment(fast)
defragmentiert wie alle anderen Defrag-Progs und WindowsXP nur die
Dateien die gerade in noch freie größere Stellen reinpassen. Und
tausende kleine Löcher bleiben. SortByName() oder MoveDownFill() faßt
aber allen freien Speicher am Ende der Platten zusammen. So werden neue
Dateien wieder unfragmentiert geschrieben.
Doch das wollte ich hier eigentlich gar nicht diskutieren, sondern
Batch-Programmierung...
Stimmt, mein Script arbeitet recht wunschgemäß, solange man nur EINE
Verzeichnisebene verschieben will. Aber leider werden keine
Ordnerstrukturen verschoben, sondern alles wandert aus Unterordnern
"flach" in den Zielordner. Also muß bei der Zeile mit dem DIR-Befehl das
/S wieder raus!
Gibt es eine Alternative zum MOVE-Befehl, die Ordner verschieben kann???
Sowas wie "MoveTree"? Oder CopyTree (dann gefolgt von DEL Quelle
benutzt)?
Oder kann man die Zeilenbearbeitung im Batch so ändern, daß an %2 die
originalen Ordnernamen angehängt werden?
move D:\Bilder\dcim\*.jpg E:
verschiebt nämlich alle Bilder in den Hauptordner von E: und verliert
nicht nur den DCIM!?
Läubi .. schrieb:> Zwie Blum schrieb:>> Aehm, welche Bereiche der Festplatte sind schneller zugreifbar als>> andere?> Wenn die Daten "Übereinander" an gleicher Postion auf den Plattentellern> liegen z.B. (wohl eher vernachlässigbar und selten).> Aber eine HD arbeitet mit konstanter Umdrehungsgeschwindigkeit folglich> ist es nicht egal ob die Daten innen oder außen auf den "Tellern"> liegen, das kann man sogar testen:
Das ist aber mehr für die Lesegeschwindigkeit relevant. Bei der
Zugriffszeit wird man die Daten eher nahe an der Mitte der Platte
speichern, weil dort die Idle-Stellung des Schreib-/Lesekopfs ist und
dessen Bewegung oft bei weitem den zeitaufwendigsten Teil des Zugriffs
darstellt.
Rolf Magnus schrieb:> Das ist aber mehr für die Lesegeschwindigkeit relevant.> Bei der Zugriffszeit wird man die Daten eher nahe an der Mitte ...
Tja wonach soll man optimieren? ;) Das ist eben das Problem es gibt kein
immer perfektes System.
> Gibt es eine Alternative zum MOVE-Befehl, die Ordner verschieben kann
Früher gab es XCopy und Deltree... statt delltree hat in XP aber einfach
del jetzt einen passenden Parameter.
Du kannst auch (ich glaub mit call) ein weiteres Batchfile aufrufen, um
somit eine Art Rekursion deines Skriptes ermöglichen.
Für ausgefallenere möglichkeiten würde sich aber wirklich dann fast ein
Programm eignen, z.B. in Java ist sowas schnell geschrieben.
Ich habe ja erst an der Sinnhaftigkeit des sortierten Kopierens
gezweifelt. Aber wenn man dann einen DVD-Player vor sich hat, der die
Files in genau der Reihenfolge abspielen will, wie sie im Directory
vorkommen, das gibt der Sache dann doch eine Berechtigung.
Also xcopy finde ich auch bei XP, sogar auf einer UBCD4WIN.
Ich werde mich mal damit befassen. Es hat Parameter für Ordner.
Bleibt mir noch ein anderes Problem: (das mit Bilder\dcim\ sei nur ein
Beispiel)
Angemommen ich befinde mich im Ordner D:\Bilder\DCIM , wenn ich die
Batchdatei ausführen möchte. Darin befinden sich noch weitere
Unterordner wie z.B. 100Casio, 100Agfa, 100DICAM usw. Der DIR-Befehl
schreibt nun eine Liste entweder ganz ohne Pfad, oder mit dem vollen
Pfad samt LW:
D:\Bilder\DCIM\100CASIO\cimg0289.jpg
D:\Bilder\DCIM\100CASIO\cimg0287.jpg
D:\Bilder\DCIM\100CASIO\cimg0282.jpg
D:\Bilder\DCIM\100CASIO\cimg0284.jpg
Ich hätte nun aber gern die Liste relativ vom aktuellen Ordner aus
100CASIO\cimg0281.jpg
100CASIO\cimg0282.jpg
100CASIO\cimg0283.jpg
100CASIO\cimg0284.jpg
und im Zielordner soll wieder der Ordner 100CASIO verwendung finden.
Geht es eine Ausgabe so in eine Liste zu schreiben? Oder den Pfad zum
aktuellen Ordner "abzuschneiden"?
DIR . /O:G /B gibt zwar eine Liste nur der Ordner aus, aber ob dann der
Ordner aus so einer Liste ganz verschoben werden kann? oder gar nix
passiert??
move D:\Bilder\dcim\100*\*.jpg E:\NeueBilder\DCIM\
holt ja die Bilder aus den Unterordnern \100*\ eine ebene hoch.
Angemommen ich befinde mich im Ordner D:\Bilder\DCIM ,
xcopy 100CASIO E:\NeueBilder\DCIM\test /S /E
verliert den/die Ordner 100CASIO
xcopy 100CASIO E:\NeueBilder\DCIM\test /T /E
legt im Ordner test nur eine leere Kopie des Ordners 100CASIO\moved an
ohne Dateien zu kopieren.
xcopy ..\DCIM\100casio test\ /S /E
verliert auch wieder den Ordner 100CASIO, kopiert aber den alten
Versuchsordner moved und moved\moved.txt mit.
Irgendwie ist das unbefriedigend. Wenn ich beim Amiga einen Ordnernamen
zum Kopieren angebe, dann wird auch der Ordner kopiert und nicht nur
sein Inhalt.
Ronald schrieb:> Irgendwie ist das unbefriedigend. Wenn ich beim Amiga einen Ordnernamen> zum Kopieren angebe, dann wird auch der Ordner kopiert und nicht nur> sein Inhalt.
Sorry aber wenn dein Amiga sooooo toll ist warum benutzt du den nicht
einfach ;P
> xcopy 100CASIO E:\NeueBilder\DCIM\test /S /E> verliert den/die Ordner 100CASIO
Du mußt schon schreiben:
>> xcopy 100CASIO E:\NeueBilder\DCIM\test\100CASIO /S /E
ggf mit /L "simulieren" /E brauchst du nur wenn du auch leere Ordner
haben willst. Ansosnten schonmal /T /E /S probiert?
Läubi .. schrieb:> Sorry aber wenn dein Amiga sooooo toll ist warum benutzt du den nicht> einfach ;P
Weil beim echten die Festplatte kaputt ging und modern programierte
Internetseiten (besonders Onlinebanking) mit den Amigabrowsern nicht
mehr möglich ist. Lange benutzte ich beide (Amiga und PC) parallel. d.h.
hauptsächlich den Amiga für normales Arbeiten und surfen, und nur für
die wenigen Dinge, die der nicht mehr konnte den PC. Anfangs
hauptsächlich nur Onlinebanking. Inzwischen habe ich ja schon länger den
WinUAE mit dem "modernsten" AmigaOS 3.5 eingerichtet, aber noch nicht
alle Programme so wie früher am echten Amiga installiert. Vieles ist ja
mit der kaputten Festplatte (eine stinknormale IDE-Platte) verloren
gegangen, bevor ich den gerade angeschafften Brenner zum Backups machen
nutzen konnte.
Ich nutze also den winUAE gelegentlich für liebgewonnene Programme, für
die ich unter DOS&WIN keinen passenden Ersatz gefunden habe.
Aber nur um ein paar Dateien zu kopieren den Emulator anschmeißen ...
ist dann doch zu aufwendig. Noch dazu wo sich die Art und Weisen Dateien
auf Datenträgern zu Schreiben stark unterscheiden. Für sein OS und
Amigadateien hat der Emulator sein Hardfile. Da kann die PC-Seite keine
Dateien "versauen". Mit WinUAE kann ich surfen, brennen, drucken, aber
leider nicht stabil SOUND und Multimedia (PC-Formate) verwenden. Ist
aber die Schwäche von WinUAE0.8 nicht AmigaOS.
So aber jetzt bitte KEINE Betriebssystemdiskusion daraus machen! Das
gehört nicht zum Thema. Ich habe es nur erwähnt, weil ich von da einige
bequemere Arbeitsweisen gewöhnt bin. Wäre der hesteller des Amiga nicht
Pleite gegangen und der Amiga weiterentwickelt worden, würde ich heute
keine PC benutzen. Aber weiter darüber diskutieren will ich hier nicht.
Es geht hier um BATCH-Programierung unter DOS. (egal wie gut oder
schlecht das ist)
> Zwie Blim schrieb:>> Hab' grad ein passendes Buch in der Bibliothek gefunden: advanced MS-DOS
batch file programming, anno '89 :-)
da muß ich mal danach suchen. vielleicht hilft es mir...
denn solche Hinweise sind hilfreicher, als jeder Betriebssystemstreit!
Denn ich habe nichts davon mit euch zu streiten ob AmigaOs besser als
MSDOS sei, sondern ich will wissen, wie das gleiche unter MSDOS zu
erreichen ist!!! (denn jedes AmigaOS ist schlankler und effizienter als
jedes windows!!!)(Aber darüber will ich hier einfach nicht streiten! )
Ich frage nicht, wie das Problem unter AmigaOS zu lösen sei, sondern wie
das Problem unter MicroSchrott-DOS (tscxhuldigung MS-DOS) zu lösen ist!
Ich will keine Diskusion um das "bessere OS"!
Ich will keine Diskusion, wie das auf anderen Systemen funktionieren
könnte!
Ich will einzig und allein wissen, wie ich mein Ziel mit MSDOS+BATCH
erreichen kann!!!
Alle anderen Diskusionen sind Sinnfrei und Kontraproduktiv!
Entschuldigt bitte, wenn ich hier energisch werde. aber die
Fragestellung ist nicht: unter welchem System ist das besser zu lösen;
sondern
WIE LÖSE ICH DAS UNTER MSDOS!
Ich habe einen Pfad der sei D:\Bilder\DCIM als aktuellen Pfad. (ist aber
variabel je nach Situation.)
Ich will die darin enthaltenen Ordner MIT INHALT WOANDERSHIN
verschieben, aber die Subordnerstruktur erhalten!
Ich will aus einem aktuellen Ordner, der D:\Bilder\ heißen KÖNNTE den
Subnordner \100CASIO\ oder mit anderem -Namen komplett mit Inhalt
verschieben. Der Zielordner soll dann wieder einen Ordner zum Bleistift
\100CASIO\ enthalten und die Dateien und Subordner darin.
Ich suche also sowas an Stringoperanten wie :
Vollpfad-AktuellerPfad=Subpfad
MakeDir Ziel:SubPfad(e)
move Subpfad(e)\*dateien*.ext to Ziel:subpfad(e)\
Läubi schrieb:
> Du mußt schon schreiben:>> xcopy 100CASIO E:\NeueBilder\DCIM\test\100CASIO /S /E>
Da es nicht anders geht, sollte die Zeile schon so aussehen.
Aber die Zeile soll ja in der BATCH erzeugt werden. Und nich per hand
geschrieben. Daher muß 100CASIO (oder irgend ein anderer Subpfad, je
nach Situation) als Variable an den Zielpfad per Stringbearbeitung
angefügt werden. Der Zielpfad ist ja im Parameter %2. Also muß ich
irgendwie eine Variable %%Subdir erzeugen, damit die FOR-Schleife dann
schreibt:
>>> xcopy %1 %2%%Subdir /S /E
Die Subdirs von 100CASIO wurden ja auch kopiert, nur eben nicht der
aufgerufene Ordner selber.
Mit welcher Variablen läßt sich in Batch der aktuelle Pfad abfragen?
ich habe jetzt schon ettliche BATCH-Tutorials gefunden und gelesen. Aber
alle behandeln Das Thema STRING-Bearbeitung nur oberflächlich oder gar
nicht. Eines nur mathematisch, wie mann zu große Zahlen vergleichen
könnte...
> ggf mit /L "simulieren" /E brauchst du nur wenn du auch leere Ordner> haben willst. Ansosnten schonmal /T /E /S probiert?
ja funktionierte nicht. Syntaxfehler. Es geht nur /T /E oder /S /E.
Gerry E. schrieb:
> Ich habe ja erst an der Sinnhaftigkeit des sortierten Kopierens> gezweifelt. Aber wenn man dann einen DVD-Player vor sich hat, der die> Files in genau der Reihenfolge abspielen will, wie sie im Directory> vorkommen, das gibt der Sache dann doch eine Berechtigung.
Prima, wenigstens einer hat verstanden worum es geht. ;)
Dieter B. schrieb:
> Vielleicht hilft Windows PowerShell weiter.
Gute Idee. Wo bekommt man die? Ist die im Web downloadbar?
OK. Habs gefunden und runtergeladen. Installiert sich gerade...