關於電腦上的知識, 如 Linux, Perl, C/C++, C# …

顯示具有 Batch file 標籤的文章。 顯示所有文章
顯示具有 Batch file 標籤的文章。 顯示所有文章

2009年9月19日 星期六

清除無用登錄檔的bat檔

問題來源:

問題內容:
請問各位大大
我想要寫清除無用登錄檔的bat檔
請問要如何寫?
請各位大大不吝指教
若是有知道的大大拜託了,20點雙手奉上<(_ _)>
註:我知道有兔子、CCleaner.....很多綠色的程式,但是我想要用批次檔執行(因為不是自己電腦,不想要在那台電腦裝那麼多的程式)

問題答案:
批次檔本身的指令很少,可以做到的事情是有限地,
大部份的情況下是需要搭配一些作業系統內建的指令,
或其它人開發的命令列工具才能達到較為複雜的功能。

清除無用登錄檔的動作,
就算作者如何保証,但仍然存在著風險,
所以不太可能會有人會開發一個完全不經由人再次確認就自行清除的命令列工具,
因為如果因此造成電腦不正常,後果誰要負責呢?

另外,在 CCleaner 的論壇中,有人也有和您一樣的想法,請看這裡
提問了想要可以自動清除無用的登錄檔機碼,
但是由於安全考量,
目前 CCleaner 只有提供兩個參數。

建議您可以下載免安裝版的 CCleaner,這樣子就不會在別人的電腦中安裝很多軟體,
下載網址:
您可以把解壓縮後的目錄放在隨身碟中,帶著走,
使用時只要直接執行「CCleaner.exe」,而您的所有設定會儲存在「ccleaner.ini」

在批次檔中使用時(請參考 http://docs.piriform.com/ccleaner/advanced-usage/command-line-parameters):
情況一:根據先前的設定,在背景執行清除動作垃圾檔案,執行完畢,就結束程式
@echo off
CCleaner /AUTO

情況二:根據先前的設定,在背景執行清除動作垃圾檔案,執行完畢就關機
@echo off
CCleaner /AUTO /SHUTDOWN


2009年9月18日 星期五

BAT set 設定變數的問題

問題來源:

問題內容:
請問一下,在批次檔(BAT)設定變數中,

我可以把變數設成命令嗎?

譬如說:

在同個資料夾下,有個A.TXT

A.TXT內容為C:\Test\

我可以設定變數BBB = A.TXT其中的內容嗎?

set BBB = A.TXT

然後我只要copy B.txt %BBB%

這樣自動就會複製到C:\Test\


另外我想問有辦法把指令設定成變數嗎?

譬如:

我想把dir /b /s a.txt的結果

設定成AAA,請問有辦法這樣做嗎?

問題答案:
分成兩個部份來回答:

1、使用檔案導向,將檔案內容導入環境變數(限制只能讀取第一行內容):
@echo off
set /p BBB=<a.txt
if not exist %BBB% md %BBB%
copy b.txt %BBB%

2、方法和 1 一樣,只是多一個步驟,先將資料導到一個暫時檔:
@echo off
dir /b /s a.txt>$$$
set /p AAA=<$$$
del /q $$$
echo %AAA%


[知識+問題]如何用產生空檔(檔案長度是零)?

問題來源:

問題內容:
我現在用 @dir 123456789.123456789 /b > tmp.bin 可以製造 但是會有額外訊息 '找不到檔案'
用 @dir 123456789.123456789 /b > tmp.bin > nul 還是會有 '找不到檔案', 請問有甚麼正規的方法產生空檔?

補充:
應該是如何用 DOS Command 產生空檔

問題答案:
方法有很多種

1、用複製檔案的方式(如不想看到額外訊息,可將訊息導到 nul 裝置):
copy nul tmp.bin

2、用檔案轉向的方式:
type nul > tmp.bin

3、使用您的方式,只要把錯誤輸出導到 nul 裝置,就不會看到錯誤訊息了
dir 123456789.123456789 /b > tmp.bin 2> nul

4、使用 unix-like 指令(可到這裡下載:http://unxutils.sourceforge.net/):
touch tmp.bin


LinkWithin

Blog Widget by LinkWithin