2016-08-25 58 views
-2

我想在我的工作中製作批處理文件工具以協助排除故障。我試圖在一行上打印兩個變量,但我嘗試過的所有內容都不起作用。我如何完成回顯並將兩個變量調用到一行?以下是我迄今爲止:Windows批處理在一條線上迴應兩個變量

@echo off 
title Get Remote Processes 
echo Get Remote Processes 
set /p computerName="Enter workstation ID or IP address: " 
echo %computerName% 
echo Getting remote processes... 
echo. 
pslist \\%computerName% 
echo. 
set /p answer1="Would you like to kill a process (Y or N)? " 
echo %answer1% 
IF /i %answer1%==N (
    echo. 
    cmd /k 
) ELSE (
    set /p processName="Enter process name or ID: " 
    echo %processName% %computerName% 
    pskill \\%computerName% %processName% 
) 
echo. 
cmd /k 

預期的結果是計算機名ProcessName。當前結果僅爲ComputerName。我發現即使在用戶輸入值之後,processName也沒有被存儲。

+1

提示?如果你這樣做,它完美的作品! –

+0

您輸入的%processName%的值是多少?你寫它的方式是正確的方式來回顯兩個變量相鄰。沒有理由不設置processName,除非你用''''或'&'或其他東西來啓動它。 – SomethingDark

+0

processName是用戶輸入的任何內容,例如iexplore,svchost等。 – TheEliteTech

回答

0

正如aschipfl已經在評論中所述,您必須使用Delayed Expansion。 將setlocal EnableDelayedExpansion添加到腳本的開頭,並且無論您使用在同一組括號中設置的變量,必須將變量前後的%更改爲!

你可以自己用這個測試:

@echo off 
setlocal EnableDelayedExpansion 
set foo=bar 
If ""=="" (
set foo=foobar 
echo."No Expansion" %foo% 
echo."Expanded " !foo! 
) 
Pause 

我有問題,一個for循環以及和與延遲擴展,現在一切工作正常。你應該嘗試了這一點...

問候

geisterfurz007

你知道你有後的「輸入進程名稱或ID:」進入東西