ROBOCOPY
我已经开始大量使用命令。我使用ROBOCOPY source destination /MIR
。有没有办法在命令执行后添加确认“y/n”,但实际上并没有运行。所以我会输入ROBOCOPY source destination /MIR
,按下后enter
会出现are you sure yes/no
确认框。这样,如果命令意外执行,我仍然可以停止它。
编辑
我尝试使用 .bat 文件,但无法弄清楚如何在运行命令后运行确认,我的意思是在我按下enter
键盘上的运行键之后ROBOCOPY
和实际运行之前ROBOCOPY
,所以它会暂停命令直到我按下y
或n
。
对于cmd
如此强大的命令,他们应该添加一个标志来启用/禁用此功能。
编辑
我可以看到这引起了很大的混乱,所以让我解释一下它应该如何运行:
C:> 批处理文件名称.bat 源 目标
{进入}
C:> 你确定吗 y/n
{y}
联系人:>
答案1
你想要的东西不可能直接实现。
您可以做的是编写一个脚本,接受您的输入,显示确认提示,然后运行 robocopy 来完成操作。
PowerShell 可以非常轻松地完成此操作。以下是可行的方法:
Param (
[Parameter(Mandatory = $true)]
[string] $SourcePath,
[Parameter(Mandatory = $true)]
[string] $DestinationPath
)
Write-host "You want to MIRROR the contents of $SourcePath to $DesinationPath"
$confirmation = Read-Host "Please confirm this is what you want to do: y/n"
If($confirmation -eq "y") {
ROBOCOPY $SourcePath $DesinationPath /MIR
}
Else {
Write-Host "The process has been declined."
}
您需要将任何包含非标准字符或空格的路径括在引号中,但这将把您提供的两个路径作为参数,提示您确认这是您想要执行的操作,如果您以“y”回应,它将完成操作。
答案2
请求退货条目是使用 SET 命令。
一个简单的测试示例是:
@echo Off
set /p "ans=are you sure y/n - "
if "%ans" equ "y" (
echo you said y
) else (
echo you said n
)