如何将参数传递给批处理文件中的变量?

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 确保在程序中所做的环境更改(如设置 actprocess 在进程结束时被丢弃,因此环境不会被污染过时的数据。

set/p 选项意味着 accept input 隐式来自键盘,但如果重定向也可能来自文件。

if 中的引号确保比较运算符的每一侧都是非空的,并且如果它包含空格等分隔符则被解释为单个字符串。

if 中的括号是必需的(至少关于 if-true 部分),以便 else 不被视为 if-true 中潜在可执行文件的参数部分。

普通 set 语句中的引号确保尾随空格不包含在分配的值中(这里可能实际上不需要,但习惯这样做是个好主意......你只需要被抓住一次才能浪费几个小时追逐杂散的空间...)