2017-04-23 85 views
0

反正有这样做吗?如何将参数传递给批处理文件中的变量?

 
@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 
+0

是的,只要你纠正了一些小错别字,该代码就可以工作;你有什么问题? – SomethingDark

+0

实际上没有错别字。语法正确 – Debendra

+0

如果语法是正确的,你不会在这里问这个问题:) – SomethingDark

回答

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选项到set意味着accept input隐式地来自键盘,但如果重定向也可能来自文件。

Th使用if中的引号可确保比较运算符的每一侧都非空,并且如果它包含分隔符(如空格),则将其解释为单个字符串。

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

明文set语句中的引号确保尾部空格不包含在赋值中(可能实际上并非实际需要,但是习惯于这样做是个好主意......您只需要被捕获一次浪费数小时追逐流浪空间......)

+0

非常感谢,我只是没有通过“SETLOCAL”,但我的代码的语法是合法的 – Debendra

+0

我不知道你的意思是你的评论:( – Magoo

+0

@David - 也许我误解了。是的,你的代码的语法是合法的,但它并没有给你想要的结果,这是正确的吗? – lit

相关问题