我從batch
腳本的代碼snippet
。該腳本失敗:「)就是在這個時候意外」 - 批處理腳本
「)就是在這個時候意外」
SETLOCAL EnableDelayedExpansion
set var="value "
echo !var!
IF "!var!"=="value " (
echo Perfect)
附:我需要腳本中的Delayed Expansion
。
我從batch
腳本的代碼snippet
。該腳本失敗:「)就是在這個時候意外」 - 批處理腳本
「)就是在這個時候意外」
SETLOCAL EnableDelayedExpansion
set var="value "
echo !var!
IF "!var!"=="value " (
echo Perfect)
附:我需要腳本中的Delayed Expansion
。
,如果你想在結尾的空間在變量名,你可以使用這樣的報價你張貼無誤messages.Though作品的摘錄:立足讚揚
@echo off
SETLOCAL EnableDelayedExpansion
set "var=value "
echo !var!
IF "!var!" == "value " (
echo Perfect)
編輯:
@echo off
setlocal enableDelayedExpansion
for /f "usebackq" %%f in (`"wmic process where name='java.exe' get commandline /format:value"`) do (
call ::run "%%~f"
)
:run
for /f "tokens=7" %%# in ("%%~1") do set "var=%%#"
echo "!var!"
IF "!var!"=="someValue " (
echo Already running
) Else (
echo S
淋上 )
該空間是強制性的。我無法在這裏粘貼整個腳本,但變量var基本上被賦值爲包含空格的「wmic」命令的輸出。 而隨着IF循環遇到我得到上述錯誤提到。 –
@SupratimDas - 因此您需要粘貼更大一部分代碼。可能是您的問題是由[This](http://www.dostips.com/forum/viewtopic.php?t=4266) – npocmaka
在這裏它如下: \t \t set v = %%(fmic「process = ˚F \t \t轉到運行 \t \t) :運行\t \t組VAR = v! \t echo「!var!」 \t IF 「!VAR!」 == 「someValue中」( \t \t \t \t回聲已經運行)否則( \t \t \t回聲停止) 這裏從FOR循環設置爲變量v的輸出,基本上是第一行的第7個標記。該變量存儲在'var'中並用於IF檢查。即使IF檢查爲真,它也不會執行IF循環內的命令。 IF循環中有很多命令,而不是單個語句。 –
小心上分配'wmic'到的環境變量如WMIC輸出是以Unicode(UTF-16小端)的輸出。查看答案【如何解析輸出,當正確的變量覆蓋不端行爲(http://stackoverflow.com/questions/24961755/)有關如何獲得wmic'的'輸出作爲ANSI字符串的細節。 – Mofi
感謝您的意見:) 是的,我在這方面很小心。既然你想出了這個 - 有沒有辦法將wmic命令的不需要的輸出重定向到NUL,也就是說我不希望在控制檯中顯示相同的結果。是這樣的: FOR/F 「跳過= 1個令牌= 7」 %% F IN( 'WMIC過程,其中 「名= '的java.exe'」 獲取命令行')做(集合V = %% F) 在這種非常情況下,如果有「的java.exe」沒有產卵情況下,我看到控制檯 - 任何情況下(S)可用 這是正確的輸出,但我不希望被顯示在控制檯一樣。 –