2014-01-11 69 views
0

我想從Windows 7中的上下文菜單中存儲在文本文件中的列表中刪除文件。我制定了命令,並且如果我在命令提示符中運行腳本,我想要清理的目錄。使腳本從上下文菜單中可靠地運行

我想讓腳本通過上下文菜單訪問,所以當我右鍵單擊文件夾並單擊快捷命令時,它將刪除單獨文本文件中列出的文件夾中的文件。這是我試過的:

我把我的命令註冊。它出現了,但沒有按我的預期運行。這是我的命令:

for /f %i in (D:\Desktop\Documents\deletelist.txt) do del %i 

這是註冊表的命令:

C:\Windows\system32\cmd.exe for /f %i in (D:\Desktop\Documents\deletelist.txt) do del %i 

我點擊了上下文菜單在此之後,在命令提示符窗口中切換當前目錄爲C:\ WINDOWS \ SYSTEM32 \並沒有運行任何東西。誰能告訴我這有什麼問題?

編輯:

很抱歉,如果我沒有讓自己在這裏清楚。該命令將在C:\ Windows \ system32 \中運行,因爲沒有當前目錄作爲參數傳遞。它運行良好,如果我去我想要的路徑並運行它。如果目錄是動態的,則不好。

我放棄了這種做法。我想,回到批處理。我的註冊表項:

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\Delete files\command] 
@="\"D:\\Desktop\\Documents\\delfil.bat\" %1" 

我的bat文件:

start /D %1 /B for /f "usebackq tokens=*" %%i in (D:\Desktop\Documents\deletelist.txt) do del /q "%%i" 
exit 

它的工作原理,但使用開始離開命令窗口熬夜,而不是自動關閉。此外,我無法刪除文件夾和文件不分青紅皁白。例如,我有一個deletelist.txt看起來像這樣:

Pale Moon temp 
Temp 
007_copy.jpg 
008_copy.jpg 
009_copy.jpg 
010_copy.jpg 
011_copy.jpg 
012_copy.jpg 
013_copy.jpg 
014_copy.jpg 
015_copy.jpg 
016_copy.jpg 
017_copy.jpg 
018_copy.jpg 
019_copy.jpg 
020_copy.jpg 
021_copy.jpg 
022_copy.jpg 
credits.jpg 
lol.reg 

有2個文件夾,其他是文件。如果我運行(del/q「%% i」),則刪除當前文件夾和子文件夾中的文件,但子文件夾保留。我必須運行一個單獨的批次(rd/s/q「%% i」)來擺脫文件夾。任何干淨的方式來運行一個命令來掃描列表,抓住行,並刪除該項目,無論它是否是文件夾或文件。

謝謝。

+0

嘗試將echo命令應用到註冊表腳本中? – Meredith

回答

0

你根本忘了參數/c

C:\Windows\system32\cmd.exe /c "for /f %i in (D:\Desktop\Documents\deletelist.txt) do del %i" 
+0

對不起,我編輯了我的帖子,使其更清晰。如果使用上下文菜單快捷方式,您提供的命令將不起作用。它將跳轉到C:\ Windows \ system32 \並在那裏運行,在列表中找到不存在的文件和文件夾。 – toomyzoom

0

剛剛發佈了一個答案在這裏How to add batch script to context menu of multiple computers,解決您的一些問題。

所以你像

cmd /c cd "%V% & <the rest of your commands> 

&方式隔開命令在同一行。在REGISTRY ONLY %V%是如果您在後臺菜單上的目錄,如果您右鍵單擊文件夾,則使用%1

您可以運行兩次命令,一次使用rd,一次使用del。它不會傷害任何東西。用&符號分隔(&)。

相關問題