命令提示字元 05:基本指令

一開始進入基本指令,就先從「cd」開始好了:

cd /?

「cd」就是 "Change Directory" 「切換目錄」的意思,這裡有很多細節要說。



首先先來基本的:

cd C:\

它就會把工作目錄切換到 C:\ 底下,但切換到 D:\ 底下呢?

cd D:\

怎麼會這樣?這是因為命令提示字元是繼承 DOS 的遺作,正確要這樣做,一個字都不能錯:

cd C:\
D:

因為在 DOS 的年代硬碟很小,沒有切割磁碟區的意義,所以才會這麼麻煩,所以命令提示字元提供「/d」:

cd /d D:\

在這裡為了解釋方便都重開來做解說,若造成不方便敬請見諒。



另外來看 cd 另外一段說明,它的意思是說假設要切換到「Document and Settings」的資料夾:

cd Document and Settings

依參數的意義,「and」和「Settings」會變成要給 cd 的參數,但原意不是這樣。而 cd 會特例不把空白當作參數,會判斷成有空白的資料夾。以下是正確的作法:

cd "Document and Settings"

當然,跟 cd Document and Settings 的結果一樣。



cd 實在是太特殊了(後面會解釋為什麼),以上面為例:

cd /d "C:\Document and Settings"

它可以簡化成:

cd/dC:\Document and Settings

也只有 cd 和幾個基本指令可以這樣簡化,所以下次只要打「cd/d」後面直接接要的目錄就好了。



cd 的部分已經講完了,下一個是建立資料夾:

md

md 是縮寫,mkdir 才是完整的指令,但用 md 也沒差,好記為原則。實際操作是:

md Test
去 C:\Users\%username% 看多了 Test 資料夾。說明其他那些參數本教學不會解釋,有興趣的可以學完再回來看,不過沒看也沒差就是了。



移除資料夾比較麻煩:

rd

好,假設來移除一個底下有檔案的資料夾(空的資料夾就不舉例了):

rd Test

咦?這也可以說是 DOS 遺留下來的產物。看看說明,所以:

rd /s /q Test

結論:「rd」沒有辦法移除有檔案的資料,所以要用全部清除「/s」和不要詢問「/q」。使用上都直接用「rd /s /q」開始,很少人用「rd」來刪除了。



刪除檔案:

del

實際操作:

del Test.txt

重點還是在參數,如「del /a」:

根據屬性選取要刪除的檔案。

這之前在 dir 已經解檡過了,同理,「del /q」:

安靜模式。

「del /s」:

由所有子目錄刪除指定的檔案。

「del /f」:

強制刪除唯讀檔案。

結論:直接用「del /f /q」開始,很少人用「del」來刪除了。



重新更名:

rename

重新更名意義上就是移動到同一個資料夾,操作上要用 rename 或 move 都可以,在這裡就不舉例了。



移動檔案:

move

可以猜出要說什麼了吧?「move /y」

move /y Test.txt Example.txt

這其實只是更名的動作,而實務上要不要 /y 看情形而定。說明中有說 move 也可以移目錄,就不舉例了。



複製檔案:

copy

可以猜出要說什麼了吧?「copy /y」

copy /y Test.txt Example.txt

「/a」和「/b」進階時有可能會用到,另外「/v」不清楚它的檢查機制為何,聽聽就好。



很抱歉說明寫到後面越寫越少,但也沒什麼好再解釋了。這些指令不難發現都有特殊用法,實際上要花時間去熟悉,多用幾次就會記起來了。這章也有些東西輕描淡寫帶過,因為有些是往後才會教到,所以學到後面可以再回來看這章,會有多一層體認,說明也會更了解。



下一章:承先啟後




  • 2012-09-11 初次發佈。
  • 2017-07-12 更新成 Windows 10 的版本。

21 則留言:

  1. 我運用了第12章的 at 技巧和本章的技巧寫了句:
    at 00:00 md a
    它回我: 新增一項工作
    然後怎麼時間一到卻沒有建立資料夾

    回覆刪除
    回覆
    1. 其實己經有在 00:00 執行
      但這不是 at 的問題

      md 是 cmd.exe 的內部命令
      如果對 Windows 的 Shell 下 md ,Windows 會不知道是什麼

      正確的是要用 "at 00:00 cmd /c md a"
      透過 cmd.exe 去執行 md

      另外因為 cmd.exe 執行的目錄不一樣
      很難去知道 at 跑出來的 cmd.exe 是在哪裡執行
      所以建議改成 "at 00:00 cmd /c md C:\a"
      用絕對路徑不要使用相對路徑

      刪除
  2. 不好意思有個地方想不通想請教一下
    del Thumbs.db /s /q /f /ah 與
    del /s /q /f /ah Thumbs.db
    的執行結果一樣,為什麼參數可以對調?
    因為按照help的說明,檔名只能放在後面?

    回覆刪除
    回覆
    1. 在大部分的指令中是可以變換位置的
      最主要還是給方便
      其中檔案名稱大多可以變換位置

      但下一章有一個指令 taskkill
      如果要關閉 notepad.exe 就一定要放在 /im 後面
      像 taskkill notepad.exe /im 就會出現錯誤

      刪除
  3. 感謝解惑^^還有個問題想請教一下:
    按照move的說明,若想同時移動兩個檔案,
    則只要在兩個檔案之間加上逗號就行了,
    但是我怎麼試都顯示:命令語法不正確。
    是我會錯意了嗎?

    回覆刪除
    回覆
    1. MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2

      幫版主回答,move 不能同時移動兩個檔案,這裡的dirname1 與 dirname2
      對應的是 來源路徑與檔案名稱 目的路徑與檔案名稱

      刪除
  4. 如果我要將 目前資料夾底下全部子資料夾內的大量檔案,
    同時複製到 另一個指定路徑,該怎麼做呢?
    只能一個一個檔案間用 "+" 連接嗎?

    回覆刪除
    回覆
    1. 用萬用字元就可以了喔
      像是 copy *.txt C:\
      就可以把副檔名為 .txt 的檔案移到 C:\ 底下

      刪除
    2. 但我要的是...
      C:\a\1.txt
      C:\a\2.txt
      C:\b\1.txt
      C:\b\2.txt
      全部集中起來
      而不是所有檔案都在同一位置

      刪除
    3. 這個就不是一個 copy 就可以結束了,這個要用到 for
      for /r .\ %i in (*.txt) do copy "%i" .\
      大概是這個樣子

      刪除
    4. 同樣都是 1.txt 2.txt ,這樣for指令會自動覆蓋嗎?

      刪除
  5. 還是不知道怎麼改檔名...

    回覆刪除
    回覆
    1. move "舊檔名.txt" "新檔名.txt"

      刪除
    2. REN "舊檔名.txt" "新檔名.txt"

      刪除
  6. 如果是要刪除大量"唯讀"資料夾
    是用rd加什麼參數

    回覆刪除
    回覆
    1. rd /s /q
      這個指令很恐佈喔,請小心使用

      刪除
    2. 這個刪掉就完全找不回來了,我去資源回收桶找過,不過就是隨便亂創的文字和文件檔,所以沒事=w=

      刪除
  7. 1. D:\a\b\c\d, 這就4個資料夾,每個資料夾裡面有一個檔案,,求刪除全部4個資料夾和裡面的檔案, 就是最後要這樣D:\ , 要安靜模式.
    2. 可以同時移動2個檔案到一個資料夾裡?例 D盤有a.txt和b.txt, 想兩個同時移動到D盤的a資料夾去.試了很久都不行.

    回覆刪除
    回覆
    1. 第一个问题可以用 rd /s /q D:\ 来删除
      第二个问题可以用 move a.txt b.txt D:\a\ 来搬移
      也可以用万用字符 move *.txt D:\a\

      刪除
  8. C:\test內有test1 test2 test3 test4,4個資料夾,4個資料夾內各有同樣的4個檔案
    我想把test這個資料夾內的所有檔案copy到C:\Users\user\desktop\新增資料夾
    我打出的指令是: copy C:\test\test1+test2+test3+test4 C:\Users\user\desktop\新增資料夾
    但他只有copy一個檔案在新增資料夾內, 請問怎樣的指令才是正確的?

    回覆刪除
  9. 我想把C:\ok移動到桌面並把同名資料夾給取代
    指令:move /y C:\ok C:\Users\user\desktop
    但卻出現"存取被拒"
    當我把桌面上的同名資料夾刪除之後 就不會有這個問題
    請問該如何更改指令?

    回覆刪除

定時會整理。