Windows中与rm和mv等同的命令是什么?.cmd文件

118

我有以下命令在一个shell脚本中。我想把这些行转换成Windows cmd文件。有人能提供一下在Windows cmd文件中"rm"和"mv"的等效命令吗?

rm -f ${BUILD_ID}/${BUILD_ASIC}*rampatch*
mv ${BUILD_ID}/${BUILD_ASIC}*rampatch* ${BUILD_ID}/emul/

10
del 意味着删除,move 意味着移动。 - Blorgbeard
3个回答

180

move在Windows中相当于Linux中的mv命令

del在Windows中相当于Linux中的rm命令




更新:这是一个简化的答案,但行为和功能如@WestCoastProjects在评论中所述有很大的不同。


29
这是一种过度简化了。行为和能力是非常不同的。 - WestCoastProjects
1
为了实现行为和功能的几乎完美匹配,可以使用@Dave的suggestion来使用Linux工具的Win32端口。我也喜欢建议使用GnuWin32,尽管我通常只是将CygwinGit bash/git for Windowsbin目录添加到我的Windows PATH中。如果你想使用纯CMD,你可以使用我在我的答案中分享的建议来获得更接近的行为和功能。 - bballdave025

40

movedel确实是等效的,但从功能角度来看,它们远非相等。例如,在通配符情况下,您无法使用move命令同时移动文件和文件夹。同样的事情也适用于del

我认为首选方案是使用Linux工具的Win32端口,我发现最好的集合在这里

mvrm包含在CoreUtils软件包中,它们运行得非常好!


27
如果您想查看有关命令差异的更详细讨论,请参见下面的“差异详细信息”部分。
LeMoDa.net网站1已存档),特别是Windows和Unix命令行等效页面(已存档),我找到了以下内容2在下一次编辑中将有一个更好/更完整的表格。
Windows command     Unix command
rmdir               rmdir
rmdir /s            rm -r
move                mv

我很想听听@Dave和@javadba的看法,了解这些命令的行为和功能有多相似,它们是否相当类似,或者非常不相似。我发现当我尝试使用它来递归删除一个目录及其包含的文件和子目录时,例如:
(Windows cmd)>rmdir /s C:\my\dirwithsubdirs\

系统提示我一个标准的Windows普及信息,询问我是否确定执行该操作。

dirwithsubdirs, Are you sure (Y/N)?

当我输入Y时,结果是我的顶层目录及其组成文件和子目录消失了。


编辑

在找到这个答案后,我重新尝试了每个命令,并对表格进行了一些修改。

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>

如果你想要与 rm -rf 等效的命令,你可以使用 rmdir /s /q,或者如我引用答案的作者所描述的那样,还有一种“老派”的方法,用于在命令没有选项来抑制确认消息时使用。只需使用 ECHO 命令输出所需响应并将值传递到命令中:echo y | rmdir /s。请注意保留{{和}}占位符。

差异详细信息

我使用 Windows CMD 和 Cygwin(带有其 bash)测试了每个命令。

在每次测试之前,我进行了以下设置。

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

这导致两者的文件结构如下。

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

这里是结果。请注意,我不会标记每个CMD或bash;CMD将在前面有一个>,而bash将在前面有一个$
非常感谢@JillAndMe的评论

注意必须使用“/”而不是“\”[;] rmdir用于删除文件夹del用于文件

相应地进行了更改,并添加了delrm的示例。 DEL和RM (对于文件)。据我所知,这些工作方式完全相同。
>del this_directory\some.txt

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

$ rm this_directory/some.txt

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

2 directories, 0 files

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 /SRM -RI

这里有一点差异,但它们非常接近。
>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

<s>我希望能够</s>得到任何人更全面的“MOVE AND MV”测试答案


注意事项

  1. 我对LeMoDa网站几乎一无所知,除了信息是

版权 © Ben Bullock 2009-2018。保留所有权利。

(存档的版权声明)

而且似乎有很多有用的编程技巧以及一些幽默(是的,用的是英式拼写)和如何修理日本马桶的信息。我还发现了一些关于“茨城报告”的东西,但我不知道那是否就是这个网站。

我认为我将更经常地去那里;它非常有用。感谢Ben Bullock,他的电子邮件在他的页面上。如果他想让我删除这些信息,我会这样做。

我将包含来自该网站的免责声明存档):

免责声明 在使用本网站上的任何计算机程序代码之前,请阅读以下免责声明。 除非另有书面说明,版权持有人和/或其他方以“原样”提供程序,不提供任何明示或暗示的保证,包括但不限于适销性和特定用途的适用性。程序的全部风险由您承担。如果程序被证明有缺陷,则您应承担所有必要的维修、修理或更正成本。 除非适用法律要求或经书面同意,否则任何修改和/或传播程序的版权持有人或其他方将不对您承担任何损害赔偿责任,包括任何一般、特殊、附带或后果性损害赔偿(包括但不限于数据丢失或数据变得不准确或您或第三方遭受的损失或程序与任何其他程序无法运行),即使该持有人或其他方已被告知此类损害的可能性。
实际上,我通过在谷歌搜索“cmd equivalent of rm”找到了这些信息。

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

我要分享的信息是最先出现的。考虑到Google的个性化和持续更新,你的搜索结果可能会有很大不同。

1
请使用 rmdir 命令删除文件夹,使用 del 命令删除文件。请注意使用 "/" 而不是 ""。 - JillAndMe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接