Äquivalent von rm und mv in Windows .cmd

88

Ich habe Folgendes in einem Shell-Skript, ich möchte die folgenden Zeilen in eine Windows-Cmd-Datei konvertieren. Kann jemand Eingaben darüber machen, was für "rm" und "mv" in der Windows-Cmd-Datei entspricht?

rm -f ${BUILD_ID}/${BUILD_ASIC}*rampatch*
mv ${BUILD_ID}/${BUILD_ASIC}*rampatch* ${BUILD_ID}/emul/
user2341103
quelle
9
delund move.
Blorgbeard ist

Antworten:

135

movein Windows entspricht dem mvBefehl unter Linux

delin Windows entspricht dem rmBefehl unter Linux

Jainendra
quelle
23
Dies ist eine übermäßige Vereinfachung. Das Verhalten und die Fähigkeiten sind sehr unterschiedlich.
Javadba
Verwenden Sie für eine nahezu perfekte Übereinstimmung von Verhalten und Funktionen den Vorschlag von @Dave, um die Win32-Ports der Linux-Tools zu verwenden. Ich mag auch das GnuWin32, das vorgeschlagen wurde, obwohl ich normalerweise nur die binVerzeichnisse von Cygwin oder Git bash / git für Windows zu meinem Windows hinzufüge PATH. Wenn Sie reines CMD verwenden möchten , können Sie anhand der Vorschläge, die ich in meiner Antwort unten geteilt habe, das Verhalten und die Funktionen verbessern .
bballdave025
34

moveund delSIND sicherlich die Äquivalente, aber vom Standpunkt der Funktionalität sind sie absolut NICHT äquivalent. Beispielsweise können Sie mit dem moveBefehl nicht beide Dateien UND Ordner (in einem Platzhalterszenario) verschieben . Und das Gleiche gilt für del.

Aus meiner Sicht ist die bevorzugte Lösung die Verwendung von Win32-Ports der Linux-Tools, von denen die beste Sammlung, die ich gefunden habe, hier ist .

mvund rmsind im CoreUtils- Paket und sie funktionieren wunderbar!

Dave
quelle
12

Wenn Sie eine detailliertere Beschreibung der Unterschiede für die Befehle wünschen, lesen Sie den Abschnitt Details zu Unterschieden weiter unten.

Auf der LeMoDa.net- Website 1 ( archiviert ), insbesondere auf der Seite mit den Windows- und Unix-Befehlszeilenäquivalenten ( archiviert ), habe ich die folgenden 2 gefunden . In der nächsten Bearbeitung gibt es eine bessere / vollständigere Tabelle.

Windows command     Unix command
rmdir               rmdir
rmdir /s            rm -r
move                mv

Ich bin daran interessiert, von @Dave und @javadba zu hören, wie gleichwertig die Befehle sind - wie sich das " Verhalten und die Fähigkeiten " vergleichen lassen, ob sie ziemlich ähnlich oder " kläglich NICHT gleichwertig " sind.

Alles, was ich herausfand, war, dass ich damit versuchte, ein Verzeichnis und seine Bestandteile und Unterverzeichnisse rekursiv zu entfernen, z

(Windows cmd)>rmdir /s C:\my\dirwithsubdirs\

gab mir eine Standard-Windows-weiß-besser-als-Sie-tun-sind-Sie-sicher-Nachricht und Aufforderung

dirwithsubdirs, Are you sure (Y/N)?

und als ich tippte Y, war das Ergebnis, dass mein oberstes Verzeichnis und seine konstituierenden Dateien und Unterverzeichnisse weggingen.


Bearbeiten

Ich schaue darauf zurück, nachdem ich diese Antwort gefunden habe . Ich habe jeden Befehl erneut versucht und die Tabelle ein wenig geändert.

Windows command     Unix command
rmdir               rmdir
rmdir /s /q         rm -r
rmdir /s /q         rm -rf
rmdir /s            rm -ri
move                mv
del <file>          rm <file>

Wenn Sie das Äquivalent für wollen

rm -rf

Sie können verwenden

rmdir /s /q

oder, wie der Autor der von mir bezogenen Antwort beschrieben hat,

Es gibt jedoch noch eine andere "alte Schule" -Methode, die früher verwendet wurde, als Befehle keine Optionen zum Unterdrücken von Bestätigungsnachrichten hatten. Einfach ECHOdie benötigte Antwort und leiten Sie den Wert in den Befehl ein.

echo y | rmdir /s


Details zu Unterschieden

Ich habe jeden der Befehle mit Windows CMD und Cygwin (mit seinen bash) getestet .

Vor jedem Test habe ich das folgende Setup vorgenommen.

Windows CMD

>mkdir this_directory
>echo some text stuff > this_directory/some.txt
>mkdir this_empty_directory

Cygwin bash

$ mkdir this_directory
$ echo "some text stuff" > this_directory/some.txt
$ mkdir this_empty_directory

Dies führte zu der folgenden Dateistruktur für beide.

base
|-- this_directory
|   `-- some.txt
`-- this_empty_directory

Hier sind die Ergebnisse. Beachten Sie, dass ich nicht jedes als CMD oder markieren werde bash. Das CMD hat eine >Vorderseite und die CMD basheine $ Vorderseite.

RMDIR

>rmdir this_directory
The directory is not empty.

>tree /a /f .
Folder PATH listing for volume Windows
Volume serial number is ████████ ████:████
base
+---this_directory
|       some.txt
|
\---this_empty_directory

> rmdir this_empty_directory

>tree /a /f .
base
\---this_directory
        some.txt
$ rmdir this_directory
rmdir: failed to remove 'this_directory': Directory not empty

$ tree --charset=ascii
base
|-- this_directory
|   `-- some.txt
`-- this_empty_directory

2 directories, 1 file

$ rmdir this_empty_directory

$ tree --charset=ascii
base
`-- this_directory
    `-- some.txt

RMDIR /S /Q and RM -R ; RM -RF

>rmdir /s /q this_directory

>tree /a /f
base
\---this_empty_directory

>rmdir /s /q this_empty_directory

>tree /a /f
base
No subfolders exist
$ rm -r this_directory

$ tree --charset=ascii
base
`-- this_empty_directory

$ rm -r this_empty_directory

$ tree --charset=ascii
base
0 directories, 0 files
$ rm -rf this_directory

$ tree --charset=ascii
base
`-- this_empty_directory

$ rm -rf this_empty_directory

$ tree --charset=ascii
base
0 directories, 0 files

RMDIR /S AND RM -RI Hier haben wir einen kleinen Unterschied, aber sie sind ziemlich nah.

>rmdir /s this_directory
this_directory, Are you sure (Y/N)? y

>tree /a /f
base
\---this_empty_directory

>rmdir /s this_empty_directory
this_empty_directory, Are you sure (Y/N)? y

>tree /a /f
base
No subfolders exist
$ rm -ri this_directory
rm: descend into directory 'this_directory'? y
rm: remove regular file 'this_directory/some.txt'? y
rm: remove directory 'this_directory'? y

$ tree --charset=ascii
base
`-- this_empty_directory

$ rm -ri this_empty_directory
rm: remove directory 'this_empty_directory'? y

$ tree --charset=ascii
base
0 directories, 0 files

I'M HOPING TO GET A MORE THOROUGH MOVE AND MV TEST


Anmerkungen

  1. Ich weiß fast nichts über die LeMoDa-Website, außer der Tatsache, dass die Informationen sind

Copyright © Ben Bullock 2009-2018 . Alle Rechte vorbehalten.

( archivierter Copyright-Hinweis )

und dass es eine Reihe nützlicher Programmiertipps zu geben scheint, zusammen mit etwas Humor (ja, der britischen Rechtschreibung) und Informationen darüber, wie man japanische Toiletten repariert. Ich fand auch ein paar Sachen reden über den „Ibaraki Report“, aber ich weiß nicht, ob das ist die Website.

Ich denke, ich werde öfter dorthin gehen; es ist ziemlich nützlich. Requisiten an Ben Bullock, dessen E-Mail auf seiner Seite ist. Wenn er möchte, dass ich diese Informationen entferne, werde ich es tun.

Ich werde den Haftungsausschluss ( archiviert ) von der Website hinzufügen :

Haftungsausschluss Bitte lesen Sie den folgenden Haftungsausschluss, bevor Sie den Computerprogrammcode auf dieser Website verwenden.

Es gibt keine Garantie für das Programm, soweit dies nach geltendem Recht zulässig ist. Sofern nicht schriftlich anders angegeben, stellen die Urheberrechtsinhaber und / oder andere Parteien das Programm "wie besehen" ohne ausdrückliche oder stillschweigende Garantie jeglicher Art zur Verfügung, einschließlich, aber nicht beschränkt auf die stillschweigenden Garantien der Marktgängigkeit und Eignung für einen bestimmten Zweck . Das gesamte Risiko für die Qualität und Leistung des Programms liegt bei Ihnen. Sollte sich das Programm als fehlerhaft herausstellen, übernehmen Sie die Kosten für alle erforderlichen Wartungs-, Reparatur- oder Korrekturarbeiten.

In keinem Fall haftet ein Urheberrechtsinhaber oder eine andere Partei, die das oben genannte Programm ändert und / oder überträgt, für Schäden, einschließlich allgemeiner, besonderer, zufälliger oder Folgeschäden, es sei denn, dies ist nach geltendem Recht erforderlich oder schriftlich vereinbart Schäden, die sich aus der Verwendung oder Unfähigkeit zur Nutzung des Programms ergeben (einschließlich, aber nicht beschränkt auf Datenverlust oder Daten, die ungenau wiedergegeben werden, oder Verluste, die von Ihnen oder Dritten aufrechterhalten werden, oder ein Ausfall des Programms bei der Ausführung mit anderen Programmen), auch wenn Ein solcher Inhaber oder eine andere Partei wurde auf die Möglichkeit solcher Schäden hingewiesen.


  1. Eigentlich habe ich die Informationen bei einer Google-Suche nach "cmd-Äquivalent von rm" gefunden.

https://www.google.com/search?q=cmd+equivalent+of+rm

Die Informationen, die ich teile, kamen zuerst.

bballdave025
quelle
Beachten Sie, dass Sie "/" nicht dies: "\" rmdirzum Löschen von Ordnern delfür Dateien
JillAndMe