【问题标题】:Equivalent of rm and mv in windows .cmdwindows .cmd 中 rm 和 mv 的等价物
【发布时间】:2013-07-12 04:47:35
【问题描述】:

我在 shell 脚本中有以下命令。我想将这些行转换为 windows cmd 文件。任何人都可以提供有关 Windows cmd 文件中“rm”和“mv”的等效项的输入吗?

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

【问题讨论】:

  • delmove

标签: bash shell cmd


【解决方案1】:

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

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




更新:这是一个简化的答案,但行为和功能与@WestCoastProjects 提到的完全不同 在评论中。

【讨论】:

  • 这过于简单化了。行为和功能完全不同。
  • 要获得近乎完美的行为和功能匹配,请使用@Dave 的suggestion 来使用Linux 工具的Win32 端口。我也喜欢建议的 GnuWin32,尽管我通常只是将 bin 目录从 CygwinGit bash / git for Windows 添加到我的 Windows PATH如果您想使用纯 CMD,您可以使用我在下面my answer 中分享的建议来获得更接近的行为和功能。
【解决方案2】:

movedel 肯定是等价的,但从功能的角度来看,它们完全不等价。例如,您不能使用move 命令同时移动文件和文件夹(在通配符方案中)。 del 也是如此。

在我看来,首选的解决方案是使用 Linux 工具的 Win32 端口,我发现其中最好的集合是 here

mvrmCoreUtils 包中,它们工作得非常好!

【讨论】:

    【解决方案3】:

    如果您想查看有关命令差异的更详细讨论,请参阅下面的关于差异的详细信息部分。

    LeMoDa.net 网站1 (archived),特别是Windows and Unix command line equivalents 页面(archived),我发现了以下2下次编辑会有更好/更完整的表格。

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

    我很想听听@Dave 和@javadba 的意见,了解这些命令的等效性——“behavior and capabilities”比较,是非常相似还是“woefully NOT equivalent”。

    我发现,当我使用它尝试递归删除目录及其组成文件和子目录时,例如

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

    给了我一个标准的 Windows-knows-better-than-you-do-are-you-sure 消息和提示

    dirwithsubdirs, Are you sure (Y/N)?
    

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


    编辑

    我在找到this answer 后回头看这个。我重试了每个命令,我会稍微改变一下表格。

    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
    

    赛格温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 前面有一个&gt;bash 前面有一个$

    非常感谢@JillAndMe 提供comment

    注意你必须 [使用] "/" 而不是这个:"\" [;] rmdir 用于删除文件夹 del 用于文件

    进行了相应的更改,并添加了delrm 的示例。

    DEL and 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 /S and RM -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
    

    &lt;s&gt;I'M HOPING TO GET&lt;/s&gt; ANYONE IS WELCOME TO ANSWER WITH A MORE THOROUGH "MOVE AND MV" TEST


    注意事项

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

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

    (archived copyright notice)

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

    我想我会经常去那里;它非常有用。本布洛克的道具,他的电子邮件在他的页面上。如果他要我删除此信息,我会的。

    我将包含来自网站的disclaimer (archived):

    免责声明 在使用本网站上的任何计算机程序代码之前,请阅读以下免责声明。

    在适用法律允许的范围内,本程序不提供任何保证。除非另有书面说明,否则版权所有者和/或其他方“按原样”提供程序,不提供任何形式的明示或暗示保证,包括但不限于对适销性和特定用途适用性的暗示保证.程序质量和性能的全部风险由您承担。如果该程序被证明有缺陷,您将承担所有必要的服务、维修或纠正的费用。

    在任何情况下,除非适用法律要求或书面同意,否则任何版权所有者或任何其他按照上述许可修改和/或传达程序的方均不对您的损害负责,包括任何一般、特殊、因使用或无法使用本程序而造成的附带或间接损害(包括但不限于数据丢失或数据被渲染不准确或由您或第三方造成的丢失或程序无法与任何其他程序一起运行) , 即使该持有人或其他方已被告知此类损害的可能性。


    1. 实际上,我通过 Google 搜索“cmd 等效于 rm”找到了该信息

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

    我要分享的信息首先出现。鉴于 Google 的个性化方式和不断更新的方式,您的搜索结果可能会大不相同。

    【讨论】:

    • 请注意,您必须使用 "/" 而不是这个:"\" rmdir 用于删除文件夹 del 用于文件
    猜你喜欢
    • 2010-10-14
    • 2022-01-09
    • 2014-01-03
    • 2014-08-24
    • 1970-01-01
    • 2010-09-24
    • 2021-06-22
    • 2019-06-21
    相关资源
    最近更新 更多