iT邦幫忙

0

DOS 跑批次

dos

請教各位,如果我想要使用一個小工具去處理所有目錄下的子目錄內檔案,
例想用 QQ.EXE去處理 D:下有 A,B,C...目錄,各目錄下還有子目錄的檔案
如何寫?
我試著用 FOR 去作,但只能處理到一層....

1 個回答

10
海綿寶寶
iT邦超人 1 級 ‧ 2014-11-11 15:03:08
最佳解答

加上 /R 試試看

<pre class="c" name="code">
FOR /R [[drive:]path] %variable IN (set) DO command  [command-parameters]

    在樹狀目錄中切換 [drive:] 路徑,並於樹狀目錄的每
    一個目錄下執行 FOR 陳述式。如果未在 /R 之後指定
    目錄規格,則採用目前的目錄。如果 set 只是單一句
    點 (.) 字元,則它只會列舉樹狀目錄。
看更多先前的回應...收起先前的回應...
10284323 iT邦新手 5 級 ‧ 2014-11-18 08:13:21 檢舉

for /r %x in (*) do qq.exe
不行,只會處理本目錄下的檔案,而再下一層的子目錄和再下層的都不會處理,而且會變成無法停止

10284323 iT邦新手 5 級 ‧ 2014-11-18 08:13:21 檢舉

for /r %x in (*) do qq.exe
不行,只會處理本目錄下的檔案,而再下一層的子目錄和再下層的都不會處理,而且會變成無法停止

slime iT邦大師 1 級 ‧ 2014-11-18 09:14:42 檢舉

10284323提到:

<pre class="c" name="code">for /r %x in (*) do qq.exe

do qq.exe 只會一直跑 qq , 一直跑一直跑一直跑一直跑一直跑....

要改成這樣:

<pre class="c" name="code">for /r %x in (*) do "%x"

改法:

  1. 前面用 %x 當變數, 後面也用 %x
  2. 用雙引號括起來以免檔名或目錄有空白造成問題.

在 Windows 7 Home 環境下可用

<pre class="c" name="code">
for /R %%f IN (*.zip) DO help %%f

你可改成

<pre class="c" name="code">
for /R %%f IN (*.zip) DO qq %%f

若目錄名稱有空白字元
就照樓上大大所言

<pre class="c" name="code">
for /R %%f IN (*.zip) DO "qq %%f"

*.zip 改成 *.* 才對

我要發表回答

立即登入回答