2009-08-29 63 views
1

我想搜索的程序是這樣的:CMD:搜索方案和可變目錄

cd "C:\" 
for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
) 

第一個問題:我想讓它搜索低谷所有硬盤驅動器(如「CD我的電腦」或這樣的東西?)

之後,它應該使該程序所在的目錄的變量。

如何在batch/cmd中做到這一點?

回答

1

此腳本將打印出的完整路徑,其中一個文件中找到:

@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將具有路徑找到的每個出現文件(可能有不止一個)。如果您需要作用於這些路徑有以下幾個選項:

  1. 添加你的文件處理命令@echo %1 found: %%~dpf線後,使用%%~dpf爲包含完整的文件路徑變量。

  2. 將路徑寫入臨時文本文件(@echo %%~dpf >> temp.out),然後在另一個for循環中將其讀回來進行處理。

  3. 將路徑連接到本地環境變量(set FILE_PATHS=!FILE_PATHS!;%%~dpf),然後在另一個for循環中解析該var以進行處理。

+0

因此,對於第二個我只是這樣做,然後以外的'for'添加'set /p= 2009-10-19 07:17:24

+0

對於2ne one將需要另外一個'for/f'循環來操作文件'temp.out'。 – 2009-10-19 12:21:01

1

「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 (
     ) 
    ) 
) 

希望它有幫助。

+0

你可以試試'cd/d %% D:';除目錄之外,'/ d'開關將變爲指定的驅動器。從命令行輸入'cd /?',查看操作系統是否支持'/ d'開關。 – 2009-08-29 14:06:34

+0

但是,如何使myprogram所在的目錄變量? – 2009-08-30 13:43:36

+0

在那段代碼中,%% f將被替換爲「myprogram.exe」的路徑,例如「D:\ folder \ myprogram.exe」。由於您要求文件夾,使用「%〜pf」(WITH引號,因爲〜將它們取出,並且路徑中未加引號的空格可能會混淆代碼)會返回文件夾,而不是文件(如「E:\ Path \到\ MyProgFolder「 這裏真正的問題是,你不能在代碼中正常分配變量,有一個」setlocal enabledelayedexpansion「代碼,但我真的不推薦它,我的解決方案是寫/讀取臨時文件或重定向爲另一個bat文件的參數 – 2009-09-03 21:32:41