我有一個批處理文件,它位於USB密鑰上。我需要知道該批次的驅動器名稱。Windows批處理腳本獲取當前驅動器名稱
例如,如果它是E:\ mybatch.bat,它應該找到E:\ F:\,G:\等同樣的東西。
我怎麼能在批處理腳本中做到這一點。 (Windows)
我有一個批處理文件,它位於USB密鑰上。我需要知道該批次的驅動器名稱。Windows批處理腳本獲取當前驅動器名稱
例如,如果它是E:\ mybatch.bat,它應該找到E:\ F:\,G:\等同樣的東西。
我怎麼能在批處理腳本中做到這一點。 (Windows)
%CD%
是你在找什麼。它打印批處理文件或運行它的命令的當前工作目錄。如果您的批處理文件位於驅動器的根目錄下,它將只顯示驅動器盤符,否則您將不得不解析前2個字符。
實施例:
echo %CD%
打印
E:\
安裝到E中的閃存驅動器上:.
更新:由於舍甫琴科在評論中說,如果你只是尋找路徑的前三個字母,然後用它來代替%CD%:
%CD:~0,3%
這將導致E:\
,爲例如,在驅動器上的任何地方。
我試圖配置geany編輯器來編譯我的java文件,即使即時在usb上。我使用%CD%JDK \ bin \ javac「%f」但它沒有工作。無論如何,你的答案是完美的,我會盡快接受你的答案。 ty – SBSTP 2011-04-27 23:46:42
嘗試%CD%\而不是%CD%。否則ITLL尋找E:JDK \ BIN \ javac的,而不是E:\ JDK \ BIN \ javac的 – 2011-04-27 23:48:50
我做了一個簡單的腳本, 'code' 關閉@echo 呼應%CD% 暫停 'code' 印刷Ç :\不是C: – SBSTP 2011-04-28 00:14:03
如果從一個.cmd/.bat文件內運行,則可以使用%~dp0
來獲得當前/工作目錄。因爲它知道UNC路徑等,所以這個更安全一些。該變量的語法參考可用here。
不是true @ewall:參數0始終保留批處理文件位置的目錄 - 如果有人從另一個驅動器調用該批處理文件,該目錄可能不是當前工作目錄。即使使用完全限定的路徑名調用批處理文件也不會將當前工作目錄更改爲該路徑。這就是爲什麼%cd%很有用 - 它顯示了當前的工作目錄,而不是批處理文件的位置。 – 2018-01-11 17:08:07
M $的文檔 「Using batch parameters」 說:
修改:%〜D0
說明:將%0到驅動器號。
你可以找到任何與此驅動器的所有USB驅動器號。
@echo off
for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,description^,drivetype 2^>NUL`) do (
if %%l equ 2 (
echo %%i is a USB drive.
)
)
非常感謝@ Sparky3489,如果我只有一個USB閃存驅動器,我把這個你的算法中,權
echo %%i is a USB drive.
Set FlashDrive=%%I
我也改了標識的措辭
後Echo %%i is a USB Flash Drive~!
然後,之後,{和}以外的算法,我可以添加閃存驅動器路徑,如...
在快速啓動窗口然後通過設立其他路徑 如
Set SourcePath=C:\Users\Public\Documents
我可以做一個批處理文件備份在閃存驅動器,(可稱爲通過Windows快捷方式有關聯的圖標〜搜索「快速啓動」,如果懷疑我在說什麼)。
Rem * * * * * * * * * Start Batch File * * * * * * * * * *
@Echo OFF
cls
Echo FlashDrive UpDater for
Echo.
Echo Excel, Word ...
Echo * * * * * * * * * ~ Excel SpreadSheets ~ * * * * * * * * *
XCopy /D /I /V /Y /U /S "%SourcePath%\Excel Documents\*.*" "%FlashPath%\Excel Documents\"
Echo * * * * * * * * * ~ Word Documents ~ * * * * * * * * *
XCopy /D /I /V /Y /U /S "%SourcePath%\Word Documents\*.*" "%FlashPath%\Word Documents\"
Echo.
Echo.
Echo FlashDrive = %FlashDrive%
Echo FlashPath = %FlashPath%
Echo.
Echo * Bonus Switch Info * * * * *
Echo * XCopy Switch /D ~ Copies Files Changed On or After the Specified Date.
Echo * {If no Date is Given, Copies only those Files whose
Echo * Source Time is Newer than the Destination Time}.
Echo * XCopy Switch /I ~ Copies More than One File to Destination (Assumes Destination is a Directory)
Echo * XCopy Switch /S ~ Copies Directories and Subdirectories Except Empty Ones
Echo * XCopy Switch /V ~ Verifies Each New File.
Echo * XCopy Switch /U ~ Copies only Files that Already Exist in Destination.
Echo * XCopy Switch /Y ~ Suppresses Prompting to Confirm You Want to Overwrite an Existing Destination File.
Echo.
Rem for More Info on XCopy Switches GoTo http://support.microsoft.com/kb/128756
Echo Directory Path = %~DP0
Echo.
Echo * Batch File Name = %0 *
Echo.
Rem Echo %CD:~0,2%, {Returns "Drive Letter & Colon"}
Rem Echo %CD:~0,3%, {Returns "Drive Letter & Colon & BackSlash"}
Pause
cls
Pause
Exit
Rem * * * * * * * * * End Batch File * * * * * * * * * *
是否要批次所在的驅動器或當前工作目錄的驅動器?這兩個是不同的。 – Joey 2011-04-28 08:52:50