我想搜索的程序是這樣的:CMD:搜索方案和可變目錄
cd "C:\"
for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
)
第一個問題:我想讓它搜索低谷所有硬盤驅動器(如「CD我的電腦」或這樣的東西?)
之後,它應該使該程序所在的目錄的變量。
如何在batch/cmd中做到這一點?
我想搜索的程序是這樣的:CMD:搜索方案和可變目錄
cd "C:\"
for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
)
第一個問題:我想讓它搜索低谷所有硬盤驅動器(如「CD我的電腦」或這樣的東西?)
之後,它應該使該程序所在的目錄的變量。
如何在batch/cmd中做到這一點?
此腳本將打印出的完整路徑,其中一個文件中找到:
@echo OFF
for %%D in (c,d,e) do (
If exist %%D:\ (
for /f "delims=" %%f in ('dir /b /s %%D:\%1 2^> NUL') do (
@echo %1 found: %%~dpf
)
)
)
%%~dpf
將具有路徑找到的每個出現文件(可能有不止一個)。如果您需要作用於這些路徑有以下幾個選項:
添加你的文件處理命令@echo %1 found: %%~dpf
線後,使用%%~dpf
爲包含完整的文件路徑變量。
將路徑寫入臨時文本文件(@echo %%~dpf >> temp.out
),然後在另一個for
循環中將其讀回來進行處理。
將路徑連接到本地環境變量(set FILE_PATHS=!FILE_PATHS!;%%~dpf
),然後在另一個for
循環中解析該var以進行處理。
「cd C:\」存在問題,它只適用於驅動器C :,但不適用於其他驅動器。該解決方案是先寫驅動器的信 的simpliest方法是這樣來做:
for %%D in (c,d,e,f,g,h,i,j,k,l,m,o) do (
%%D:
cd %%D:\
for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
)
)
然後它搜索所有驅動器。你也可以使用
for %%D in (c,d,e,f,g,h,i,j,k,l,m,o) do (
If exist %%D:\ do (
%%D:
cd %%D:\
for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
)
)
)
希望它有幫助。
你可以試試'cd/d %% D:';除目錄之外,'/ d'開關將變爲指定的驅動器。從命令行輸入'cd /?',查看操作系統是否支持'/ d'開關。 – 2009-08-29 14:06:34
但是,如何使myprogram所在的目錄變量? – 2009-08-30 13:43:36
在那段代碼中,%% f將被替換爲「myprogram.exe」的路徑,例如「D:\ folder \ myprogram.exe」。由於您要求文件夾,使用「%〜pf」(WITH引號,因爲〜將它們取出,並且路徑中未加引號的空格可能會混淆代碼)會返回文件夾,而不是文件(如「E:\ Path \到\ MyProgFolder「 這裏真正的問題是,你不能在代碼中正常分配變量,有一個」setlocal enabledelayedexpansion「代碼,但我真的不推薦它,我的解決方案是寫/讀取臨時文件或重定向爲另一個bat文件的參數 – 2009-09-03 21:32:41
因此,對於第二個我只是這樣做,然後以外的'for'添加'set /p=
2009-10-19 07:17:24
對於2ne one將需要另外一個'for/f'循環來操作文件'temp.out'。 – 2009-10-19 12:21:01