我正在编写一个简单的批处理文件 (remove.bat) 来删除一个目录及其所有子目录。该文件包含以下命令 -
rmdir /S modules
其中modules是非空目录的名称。
我收到以下消息 -
C:\...\bin>rmdir /S modules
modules, Are you sure (Y/N)?
如何通过批处理文件向上面的 Y/N 问题提供控制台输入“Y”?有没有可以做到这一点的命令?
我正在编写一个简单的批处理文件 (remove.bat) 来删除一个目录及其所有子目录。该文件包含以下命令 -
rmdir /S modules
其中modules是非空目录的名称。
我收到以下消息 -
C:\...\bin>rmdir /S modules
modules, Are you sure (Y/N)?
如何通过批处理文件向上面的 Y/N 问题提供控制台输入“Y”?有没有可以做到这一点的命令?
正如其他人指出的那样,您应该使用该/Q
选项。但是还有另一种“老派”的方式来做到这一点,它在命令没有选项来抑制确认消息的那一天被使用。只需 ECHO 所需的响应并将值通过管道传输到命令中。
echo y|rmdir /s modules
我建议改用该/Q
选项,但如果您遇到不提供抑制确认消息选项的命令,管道技术可能很重要。
注-此技术仅在命令从标准输入读取输入时才有效,与 cmd.exe 内部命令一样。但这对于某些外部命令可能并非如此。
dormdir /S
用于删除非空目录,dormdir /Q
用于不提示。结合以rmdir /S /Q
安静地删除非空目录。
采用rmdir /S /Q modules
/Q
禁止确认提示。
你可以做
rmdir /Q
Q代表安静
如果您不处理具有英语/美国语言环境的 Windows,您可能需要检索您的机器所需的答案:
@echo off
setlocal
set "ans_yes="
set "ans_no="
set "ans_all="
copy /y nul # >nul
for /f "tokens=2-7 delims=[(/)]" %%a in ( '
copy /-y nul # ^<nul
' ) do if not defined ans_yes if "%%~e" == "" (
set "ans_yes=%%~a"
set "ans_no=%%~b"
set "ans_all=%%~c"
) else (
set "ans_yes=%%~a"
set "ans_no=%%~c"
set "ans_all=%%~e"
)
del /q #
set "ans_yes=%ans_yes: =%"
set "ans_no=%ans_no: =%"
set "ans_all=%ans_all: =%"
set "ans_y=%ans_yes:~0,1%"
set "ans_n=%ans_no:~0,1%"
set "ans_a=%ans_all:~0,1%"
endlocal & (
set "ans_y=%ans_y%"
set "ans_n=%ans_n%"
set "ans_a=%ans_a%"
)
echo %ans_y%|rmdir /s modules
我只想补充一点,虽然不适用于 Rmdir,但在某些情况下,强制开关也可能是解决方案。因此,一般来说,您应该查看 /f、/q 或其某些变体的命令开关(例如,Netdom RenameComputer 使用 /Force,而不是 /f)。
回声管是一个巧妙的技巧,并且非常有用,因为您不会总能找到合适的开关。例如,我认为这是绕过这个 Y/N 提示的唯一方法......
Echo y|NETDOM COMPUTERNAME WorkComp /Add:Work-Comp
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 命令。如果你写了很多批处理文件,非常非常有用的东西。
如果您有Windows 版 Git,那么您已经拥有它,以及其他 GNU Core Utils。检查你PATH
的。大概在C:\Users\USERNAME\AppData\Local\Programs\Git\usr\bin
如果您需要下载 Windows 二进制文件,它们可以从很多不同的地方获得,但最受欢迎的可能是https://cygwin.com/packages/summary/coreutils.html