Wie kopiere ich nur eine Datei, navigiere dann manuell zu einem anderen Ziel und füge sie dann ein. (Ohne festen Pfad)

392
Tom

Ich muss eine Datei aus einem Verzeichnis in ein anderes verschieben, ohne dass der Befehl Kopieren / Einfügen feste Pfade enthält. Das bedeutet, dass ich wahrscheinlich keinen einzeiligen Befehl zum Kopieren / Einfügen haben kann:

Die Ordnerstruktur sieht wie folgt aus:

  • Hauptordner
    • Files.dir
    • log.dir
    • executable.bat

Das ist mein Code:

cd log if exist flist.log del flist.log cd .. cd Files dir /b /a-d>flist.log copy flist.log cd .. cd log paste flist.log 

Oder, wenn möglich, so etwas wie:

cd log if exist flist.log del flist.log cd .. cd Files dir /b /a-d>flist.log (save in Files.dir without a fixed path) 

Ich kann keinen festen Pfad verwenden, da der Ordner, in dem er ausgeführt wird, verschoben werden kann.

Vielen Dank :)

0
`Files.dir`? Versuchen Sie, ein einzelnes Batch-Skript für Windows, Unix, _und_ OpenVMS zu schreiben? grawity vor 5 Jahren 0

2 Antworten auf die Frage

0
grawity

Du nicht Das Kopieren / Einfügen von Dateien ist im Allgemeinen nicht in der Befehlsshell vorhanden.

Stattdessen sagen Sie direkt, wohin die Datei verschoben werden soll:

if exist log\flist.log del log\flist.log  cd Files dir /b /a-d > flist.log  move flist.log ..\log\ 

Oder in der Tat, es direkt zu sagen, wo zu schreiben, die Datei an erster Stelle:

cd Files dir /b /a-d > ..\log\flist.log 

Es gibt keine Grundlage für Ihre Anforderung "Keine Oneliner". Wie Sie sehen, verwendet keines der obigen Beispiele einen festen Pfad. Alle Befehle akzeptieren relative Pfade (mit ..oder ohne) auf dieselbe Weise wie cd.

** Das hat funktioniert, Danke! ** Ich habe nach einer Antwort darauf gesucht, aber ich habe nur herausgefunden, wie man Xcopy und ähnliches verwendet. Meist Onliner mit festen Pfaden. Es schien einfach zu lösen, aber es war nicht leicht, eine Antwort wie Ihre zu finden :) Tom vor 5 Jahren 0
0
dave

Anscheinend besteht die Absicht Ihres Skripts darin, eine Liste von Dateien zu erstellen, die sich im Unterverzeichnis filesIhres aktuellen Arbeitsverzeichnisses befinden. Die Liste wird im Unterverzeichnis abgelegt, logdas sich daneben befindet files.

Relative Pfade funktionieren, es muss nicht cdüberall sein.

dir /b /a-d files >log\flist.log

Es ist beabsichtigt, dass Sie zwei Kopien der Auflistung erhalten, was in Ihrem ersten Beispiel der Fall zu sein scheint

copy /y log\flist.log files\flist.log