我正在编写一个简单的批处理文件(remove.bat)来删除目录及其所有子目录。该文件包含以下命令 -
rmdir /S modules
其中 modules 是非空目录的名称。
我收到以下消息 -
C:\...\bin>rmdir /S modules
modules, Are you sure (Y/N)?
如何通过批处理文件将控制台输入“Y”提供给上面的Y / N问题?有没有可以做到这一点的命令?
答案 0 :(得分:33)
正如其他人所指出的那样,您应该使用/Q
选项。但是还有另一种“旧学校”的方式,当命令没有选项来压制确认消息时,这些方法在当天被使用。只需ECHO所需的响应并将值传递给命令。
echo y|rmdir /s modules
我建议使用/Q
选项,但如果您遇到的命令没有提供禁止确认消息的选项,那么管道技术可能很重要。
答案 1 :(得分:4)
执行rmdir /S
删除非空目录,并执行rmdir /Q
不提示。结合rmdir /S /Q
可以安静地删除非空目录。
答案 2 :(得分:2)
使用rmdir /S /Q modules
/Q
会禁止确认提示。
答案 3 :(得分:1)
你可以做到
rmdir /Q
Q代表安静
答案 4 :(得分:0)
我只想补充一点,虽然不适用于Rmdir,但在某些情况下,强制转换也可能是解决方案。因此,在一般意义上,您应该查看/ f,/ q或其某些变体的命令开关(例如,Netdom RenameComputer使用/ Force,而不是/ f)。
回声管道是一个巧妙的技巧,非常有用,因为你不会总是找到合适的开关。例如,我认为这是绕过这个Y / N提示的唯一方法......
Echo y|NETDOM COMPUTERNAME WorkComp /Add:Work-Comp
答案 5 :(得分:0)
如果您不使用英语/美国语言环境的窗口,则可能需要获取answers needed for your machine:
$_POST['name'];
答案 6 :(得分:0)
Yes 是一个很棒的工具,它会不断地对任何要求输入的过程回答 Yes、No 或其他任何问题。
如果你自己运行它,它只会一遍又一遍地输出 y
+ enter。但这并不是它的真正含义。它用于管道到另一个正在寻找对提示的响应的程序。
最简单的用例:
yes|rd temp /s
您可以使用 yes.exe
来输出任何参数或字符串:(愚蠢的警告示例):
yes hello world
用于简单的基本 10 PRINT "Hello World": GOTO 10
它适用于具有重复提示但没有内置 /y
或 /n
的命令行工具。
例如,您正在复制文件并不断收到 Overwrite? (Yes/No/All)
提示,您不得不敲击“N”键表示否。以下是修复方法:
yes n|copy * c:\stuff
这只是 GNU Core Utils for Windows 的一小部分,它为 Windows 用户提供了基本的 Linux 命令。如果您编写大量批处理文件,则非常非常有用。
如果您有 Git for Windows,那么您已经拥有它,以及其余的 GNU Core Utils。检查您的 PATH
。它可能在C:\Users\USERNAME\AppData\Local\Programs\Git\usr\bin
如果您需要下载 Windows 二进制文件,可以从许多不同的地方获得它们,但最受欢迎的可能是 https://cygwin.com/packages/summary/coreutils.html