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

时间:2017-04-23 16:34:14

标签: batch-file cmd command

有没有这样做?

@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

1 个答案:

答案 0 :(得分:0)

@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,因此环境不会受到陈旧数据的污染

/p的{​​{1}}选项隐含地来自键盘set,但如果重定向,也可能来自文件。

accept input中的引号确保比较运算符的每一边都是非空的,并且如果它包含像空格这样的分隔符,则会被解释为单个字符串。

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

普通else语句中的引号确保尾随空格不包含在指定的值中(这可能不是实际需要的,但是习惯这样做是个好主意...你只需要被抓出一次浪费了几个小时追逐流浪空间......)