2017-04-23 87 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

相關問題