如何将参数传递给批处理文件中的变量?
How to pass parameter into variable in batch file?
有这样的方法吗?
@echo off
ECHO WHAT do you want to do?
ECHO 1.MOVE
ECHO 2.COPY
set "Act="
IF %Act% EQU 1 SET process=MOVE ELSE SET process=COPY
%process% testfile.txt New
pause
@echo off
SETLOCAL
ECHO WHAT do you want to do?
ECHO 1.MOVE
ECHO 2.COPY
set /p "Act="
IF "%Act%" EQU "1" (SET "process=MOVE") ELSE (SET "process=COPY")
%process% testfile.txt New
pause
setlocal
确保在程序中所做的环境更改(如设置 act
和 process
在进程结束时被丢弃,因此环境不会被污染过时的数据。
set
的 /p
选项意味着 accept input
隐式来自键盘,但如果重定向也可能来自文件。
if
中的引号确保比较运算符的每一侧都是非空的,并且如果它包含空格等分隔符则被解释为单个字符串。
if
中的括号是必需的(至少关于 if-true 部分),以便 else
不被视为 if-true 中潜在可执行文件的参数部分。
普通 set
语句中的引号确保尾随空格不包含在分配的值中(这里可能实际上不需要,但习惯这样做是个好主意......你只需要被抓住一次才能浪费几个小时追逐杂散的空间...)
有这样的方法吗?
@echo off ECHO WHAT do you want to do? ECHO 1.MOVE ECHO 2.COPY set "Act=" IF %Act% EQU 1 SET process=MOVE ELSE SET process=COPY %process% testfile.txt New pause
@echo off
SETLOCAL
ECHO WHAT do you want to do?
ECHO 1.MOVE
ECHO 2.COPY
set /p "Act="
IF "%Act%" EQU "1" (SET "process=MOVE") ELSE (SET "process=COPY")
%process% testfile.txt New
pause
setlocal
确保在程序中所做的环境更改(如设置 act
和 process
在进程结束时被丢弃,因此环境不会被污染过时的数据。
set
的 /p
选项意味着 accept input
隐式来自键盘,但如果重定向也可能来自文件。
if
中的引号确保比较运算符的每一侧都是非空的,并且如果它包含空格等分隔符则被解释为单个字符串。
if
中的括号是必需的(至少关于 if-true 部分),以便 else
不被视为 if-true 中潜在可执行文件的参数部分。
普通 set
语句中的引号确保尾随空格不包含在分配的值中(这里可能实际上不需要,但习惯这样做是个好主意......你只需要被抓住一次才能浪费几个小时追逐杂散的空间...)