2017-03-25 55 views
1

我正在嘗試編寫一個小批處理腳本來從拇指驅動器安裝應用程序。問題是根據可用的驅動器號將插入不同計算機時的驅動器號更改。我有腳本來運行安裝,但想在開始時添加一個腳本來檢測我插入的拇指驅動器分配的驅動器號,並將其存儲在一個變量中,然後我可以用其餘腳本替代驅動器信來完成安裝。將wmic命令的結果捕獲到變量

我得到了命令來識別指定驅動器的驅動器號,它自己的工作。

wmic logicaldisk where volumename="StacelandFlash" get name 

結果:D:(正確)

但我似乎無法將其分配給一個變量。

set X=wmic logicaldisk where volumename="StacelandFlash" get name 
echo X 

結果:X

set X=wmic logicaldisk where volumename="StacelandFlash" get name 
echo %X% 

結果:wmic logicaldisk where volumename="StacelandFlash" get name

+0

請將您的問題標題添加爲相關內容,而不僅僅是重複您添加的標籤。您的標題應該描述您要問的問題或您正在嘗試解決的問題,並且應該足夠清楚,以供將來的讀者在查看結果列表中查看時使用。您只是簡單地將標籤信息添加爲主題,這是無意義的和重複的。 –

+2

[解決在任何主機上的批處理文件中的USB驅動器號]可能的重複(http://stackoverflow.com/questions/6109953/resolve-usb-drive-letter-in-batch-file-on-any-host-計算機) –

+0

排版「DOS和批處理是不同的動物,你幾乎肯定不使用DOS」評論。 – SomethingDark

回答

0

我想批處理文件執行存儲在拇指驅動器上。這個批處理文件是雙擊執行的。因此,所有你需要的是:

set "DriveLetter=%~d0" 

%~d0引用參數0的驅動器是批處理文件名。有關如何引用批處理文件參數的詳細信息,請在命令提示符窗口call /?中運行。 %~d0擴展爲D:E:,...

+0

替換腳本中的驅動器盤符的所有引用謝謝漁業部。這是一個非常簡單的解決方案,可以完成工作。我不明白,但這正是我想要做的。 – 2Cents

2

首先,將一個命令的輸出捕獲到可變使用for /F。有關完整的詳細信息,請參閱cmd控制檯中的for /?。例如:

for /f "tokens=2 delims=:" %%I in ('find /c /v "" "notes.txt"') do (
    set /a "linecount=%%I" 
) 
rem // %linecount% now contains the number of lines in notes.txt 

現在,有幾個獨特的捕捉WMI查詢結果的併發症。首先,你的wmic命令包含一個等號,它將打破for /f。該部分很容易解決:或者使用脫字符(例如^=)將=轉義出來,或者用引號括起來。

下一個障礙有點棘手。 WMI結果以非ANSI編碼(UCS-2 LE)編碼。捕獲wmic的輸出還會捕獲輸出的編碼,導致最後一個字符被移動到行首或其他意外行爲。解決方法是使用第二個嵌套for /f來消毒該值。

有了這些想法,我認爲這是你在找什麼:

@echo off 
setlocal 

for /f "tokens=2 delims==" %%I in (
    'wmic logicaldisk where "volumename='StacelandFlash'" get name /value' 
) do for /f "delims=" %%# in ("%%I") do set "driveletter=%%~#" 

echo %driveletter% 

注:信貸@Dave Benham發現此解決方法。

0

您需要在For循環中運行該命令。

@Echo Off 
For /F "Skip=1 Delims=" %%A In (' 
    "WMIC LogicalDisk Where (VolumeName='StacelandFlash') Get Name" 
') Do For %%B In (%%A) Do Set "USB=%%B" 
Echo(%USB% 
Timeout -1 
+0

非常感謝Compo 最初我使用提示來詢問驅動器盤符如下。這工作得很好,但你給了我正是我所希望的。再次感謝。 關閉@echo 回聲輸入源驅動器號 集/ P驅動=驅動器號: ,然後用%驅動器% – 2Cents

相關問題