batch-file - 批处理文件中的复制仅在第二次运行时有效
问题描述
我的问题是,.bat 文件在第一次运行时不会复制现有文件 fileA.mod。但是当我再次运行 .bat 文件时,它会复制该文件。
有趣的是,当文件不包含 if 条件时,复制命令第一次运行良好。
@echo off
:: Run command: SO_script.bat DEV PRE 5617295
:: DEV, TEST or PROD
set TypeOfTask=%1
:: PRE, INTER or POST
set Process=%2
:: Identification number of investigated task
set NoOfTask=%3
if %TypeOfTask%==DEV (
set source=C:\ISPPT\TASK\%NoOfTask%
mkdir C:\AutomaticTests\DEV\%NoOfTask%
set destination=C:\AutomaticTests\DEV\%NoOfTask%
if %Process%==PRE (
copy %source%\fileA.mod %destination%
)
)
解决方案
这个问题是重复的,请不要将此答案标记为已接受。
我发布它是为了向您展示使用延迟扩展的示例并提供可能的替代方案。
此外,它还显示了您应该使用的其他最佳实践,例如缩进、正确注释以及用于设置和比较变量和字符串的推荐语法。
@Echo Off
Rem Run command: SO_script.bat DEV PRE 5617295
Rem DEV, TEST or PROD
Set "TypeOfTask=%~1"
Rem PRE, INTER or POST
Set "Process=%~2"
Rem Identification number of investigated task
Set "NoOfTask=%~3"
If "%TypeOfTask%"=="DEV" (
Set "source=C:\ISPPT\TASK\%NoOfTask%"
Set "destination=C:\AutomaticTests\DEV\%NoOfTask%"
SetLocal EnableDelayedExpansion
MD "!destination!" 2>Nul
If "%Process%"=="PRE" (
Copy /Y "!source!\fileA.mod" "!destination!">Nul
)
EndLocal
)
我还建议您向脚本添加某种验证,以确保它以正确的顺序接收所有必需的输入参数,并且值与可接受的数据匹配。
如果您仅将变量名称用于脚本中显示的内容,那么您当然可以根本不设置任何这些变量:
@Echo Off
Rem Run command: SO_script.bat DEV PRE 5617295
If "%~1"=="DEV" (
MD "C:\AutomaticTests\DEV\%~1" 2>Nul
If "%~2"=="PRE" (
Copy /Y "C:\ISPPT\TASK\%~1\fileA.mod" "C:\AutomaticTests\DEV\%~1">Nul
)
)
或者,您可以在带括号的块之前设置变量:
@Echo Off
Rem Run command: SO_script.bat DEV PRE 5617295
Rem DEV, TEST or PROD
Set "TypeOfTask=%~1"
Rem PRE, INTER or POST
Set "Process=%~2"
Rem Identification number of investigated task
Set "NoOfTask=%~3"
Rem Setting source and destination variables
Set "source=C:\ISPPT\TASK\%NoOfTask%"
Set "destination=C:\AutomaticTests\%TypeOfTask%\%NoOfTask%"
If "%TypeOfTask%"=="DEV" (
MD "%destination%" 2>Nul
If "%Process%"=="PRE" (
Copy /Y "%source%\fileA.mod" "%destination%">Nul
)
)
推荐阅读
- javascript - 在 webview 中启用 javascript 导致页面加载问题
- python - chrome 版本 79.0.3945.130 中关于 Colab 的空间问题
- php - 无法在表格中添加边框样式(phpword)
- github - 如何更改 GitHub 自述文件中的文本对齐方式?
- mysql - 具有多个条件的 SELECT GROUP
- java - 在 JLabel 的文本中设置浮点数会导致 NaN。是否有另一种方法可以将浮点值存储到 JLabel?
- python - 如何将opencv捕获的逐帧直接插入数据库?
- php - PHP - 使用 google cloud vision ocr / text recognizion from images without SDK
- javascript - 在覆盖层下方的元素上注入鼠标事件处理
- python - 如何使搜索和计数更快?