![]() |
||
|
New Member
加入日期: Nov 2005
文章: 4
|
對不起我剛才嘗試了一下,
不過發現一個非常鳥的問題, %date% 所顯示的結果是 星期三 2008/07/30, 居然不是年份在最前面, 有沒有人知道要如何把星期的資訊放到最後面, 或者是有沒有不顯示的方法呢? |
|||||||
|
|
|
Basic Member
加入日期: May 2004 您的住址: ROC
文章: 26
|
再次問一下
小弟從網上搜到的批次壓縮寫法: @echo off set a=C:\Program Files\7-Zip\7z.exe for %%a in (%*) do (dir /a %%a|findstr "DIR" >nul 2>nul && ("%a%" a -t7z "%%~dpa%%~na.7z" "%%~a\*") || ("%a%" a -t7z "%%~dpa%%~na.7z" %%a)) 不知為何最多只能一次壓縮22個檔案,超過就會出現錯誤訊息 網上的說明實在太難,完全看不懂....暈@@" 請問該如何解決這個問題呢?? ===================================== 28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %* 命令行傳遞給批處理的參數 %0 批處理文件本身 %1 第一個參數 %9 第九個參數 %* 從第一個參數開始的所有參數 批參數(%n)的替代已被增強。您可以使用以下語法: %~1 - 刪除引號("),擴充 %1 %~f1 - 將 %1 擴充到一個完全合格的路徑名 %~d1 - 僅將 %1 擴充到一個驅動器號 %~p1 - 僅將 %1 擴充到一個路徑 %~n1 - 僅將 %1 擴充到一個文件名 %~x1 - 僅將 %1 擴充到一個文件擴展名 %~s1 - 擴充的路徑指含有短名 %~a1 - 將 %1 擴充到文件屬性 %~t1 - 將 %1 擴充到文件的日期/時間 %~z1 - 將 %1 擴充到文件的大小 %~$PATH : 1 - 查找列在 PATH 環境變量的目錄,並將 %1 擴充到找到的第一個完全合格的名稱。如果環境 變量名未被定義,或者沒有找到文件,此組合鍵會 擴充到空字符串 可以組合修定符來取得多重結果: %~dp1 - 只將 %1 擴展到驅動器號和路徑 %~nx1 - 只將 %1 擴展到文件名和擴展名 %~dp$PATH:1 - 在列在 PATH 環境變量中的目錄裡查找 %1, 並擴展到找到的第一個文件的驅動器號和路徑。 %~ftza1 - 將 %1 擴展到類似 DIR 的輸出行。 可以參照 call/? 或 for/? 看出每個參數的含意 echo load "%%1" "%%2">c:test.txt 生成的文件內容為 load "%1" "%2" 批處理文件裡,用這個格式把命令行參數輸出到文件 ========================================== |
||
|
|
|
New Member
加入日期: Sep 2003
文章: 1
|
引用:
不同作業系統%date%會不太一樣 C:\>echo %date:~4%%date:~0,3% 2008/07/30星期三 (windows 2000) 引用:
=====111.bat===== @echo off set a=S:\7-Zip\7z.exe for %%a in (%*) do (dir /a %%a|findstr "DIR" >nul 2>nul && ("%a%" a -t7z "%%~dpa%%~na.7z" "%%~a\*") || ("%a%" a -t7z "%%~dpa%%~na.7z" %%a)) =====end===== 測試 111 %SystemRoot%\fonts 結果順利完成...146個檔案 (windows 2000 , 7-Zip 4.57) |
||
|
|
|
Basic Member
加入日期: May 2004 您的住址: ROC
文章: 26
|
不同作業系統%date%會不太一樣
C:\>echo %date:~4%%date:~0,3% 2008/07/30星期三 (windows 2000) 原來如此 ^^ =====111.bat===== @echo off set a=S:\7-Zip\7z.exe for %%a in (%*) do (dir /a %%a|findstr "DIR" >nul 2>nul && ("%a%" a -t7z "%%~dpa%%~na.7z" "%%~a\*") || ("%a%" a -t7z "%%~dpa%%~na.7z" %%a)) =====end===== 測試 111 %SystemRoot%\fonts 結果順利完成...146個檔案 (windows 2000 , 7-Zip 4.57) 看來不是批次檔的問題而是系統的關係 我用xp只要將超過22個檔案傳送到批次檔就會出現如下圖的錯誤訊息 ![]() ![]() |
|
|
|
*停權中*
加入日期: Jan 2008
文章: 4
|
配服, 配服... 一切都自己來
我太懶了, 要備份都用 syncback se, 可定時, 可壓成一個 zip, 可保留最近 n 次版本... |
|
|
|
New Member
加入日期: Sep 2003
文章: 1
|
引用:
我猜是變數長度(字元數)的問題 你的做法應該是選擇數個"檔案" 由右鍵-->傳送到-->批次檔執行 以下是模擬的狀況(windows 2000 , 7-Zip 4.57) [狀況1]如下圖 由第四層資料夾中選10個檔 (右鍵-->傳送到...) 結果順利完成 分析: 每一檔案之路徑+檔名長度為3+41*4+1=168 (A:\0123456789012345678901234567890123456789\...) 變數長度為168*10=1680 ![]() http://i44.photobucket.com/albums/f17/justliker/a01.gif [狀況2]如下圖 由第五層資料夾中選10個檔 (右鍵-->傳送到...) 結果失敗被拒絕 分析: 每一檔案之路徑+檔名長度為3+41*5+1=209 變數長度為209*10=2090 ![]() http://i44.photobucket.com/albums/f17/justliker/a02.gif 減少路徑的長度或是將操作的目標改成"資料夾"就能避免這類問題 再不然直接在命令提示字元執行 111.bat X:\backup\... ![]() |
|
|
|
|
New Member
加入日期: Apr 2004 您的住址: 台北
文章: 5
|
對不起,我把這篇挖起來了,
我有兩個問題想請教: 前面有說到日期的寫法 可將2008/07/11 => 20080711 除了日期外,我還需要時間變數做檔名, 實際測試的結果有個問題; 當上午1:22分時取到的為 (空白)122 不知道有什麼辦法可以讓24小時制的上午時間變數自動補零? ex: 上午1:22 =>0122 下午1:22 =>1322 第二個問題是 假如我們在 開始/執行 下一個dos指令;如ipconfig或dir等指令, 如何讓結果暫時顯示於螢幕上,不立刻關閉? (不使用批次..)
__________________
請來噗浪∼ 此文章於 2008-11-17 03:30 PM 被 nekonohouse 編輯. |
|
|