[已解決] [批次檔] 請高手支援俺,讓它達成一鍵執行,謝謝。

以下內容純討論批次檔,若您想用滑鼠 複製、移動、刪除解決本人想法的話,就請您不用觀看與回覆本主題囉






作業系統:Windows 7 Pro x86 版 (公司電腦,有系統管理員權限)
解壓縮軟體:Winrar 6.11 x86版 命令列
應用軟體:AIDA64 Engineer 6.75.6111 beta (Aug 05, 2022) 命令列

弄了一個自解壓縮檔,從外接隨身碟上執行

[已解決] [批次檔] 請高手支援俺,讓它達成一鍵執行,謝謝。

執行步驟是:
1.解壓縮到 C:\AIDA\
2.執行 Run.bat 批次檔案
3.背景執行 AIDA64 Engineer 匯出一個硬體規格 .htm 網頁檔 [2.5MB~8MB]
4.RAR壓縮 .htm 網頁檔 [1MB↓]
5.將剛壓縮完的 RAR 檔案移動到 C:\ 根目錄
6.刪除 C:\AIDA\ 整個資料夾及其內容檔案

Run.bat 內容是:

@echo off
AIDA64 C:\AIDA\ /R /ALL /MHTML /SILENT
rar a -ag+YYYY_MM_DD_A_HHMM -r C:\AIDA\ "C:\AIDA\*.htm"
move "C:\AIDA\*.rar" C:\
del /F/S/Q "C:\AIDA"
rmdir /S/Q "C:\AIDA"


目前從執行步驟1到5都OK,唯獨步驟6不OK
網路找了資料加進 Run.bat 到最末

set Dir=%~dp0
start "" cmd /c "rd /s /q "%Dir:~,-1%"&exit"
做不到刪除 C:\AIDA\ 整個資料夾
想到的原因在於 Run.bat 執行中鎖住 C:\AIDA\ 資料夾
另嘗試建立成兩個批次檔分別進行 o.bat & i.bat

i.bat:
move C:\AIDA\o.bat C:\
call C:\o.bat
exit
試過 call 改成 start

o.bat:
rd /s/q C:\AIDA\
del %0

也嘗試加入消除屬性與取得資料夾所有權

attrib -s -h -r -a %0
echo y|cacls %0 /c /g everyone:f 2>nul
del /s /q /f %0

也會造成 [程序無法存取檔案,因為檔案正由另一個程序使用。]

請高手求解,感恩。

之外,
有想法加入步驟7,或省略壓縮步驟 再執行移動檔案到隨身碟

於批次檔 PAUSE 暫停,經由[按鍵]輸入隨身碟代號後,執行將 .RAR 或 .HTM 檔案 移動檔案到隨身碟
按鍵通常為 D、E、F、G、H...
這段批次檔俺就完全不會了

有想法加入步驟0,先完全停止常駐程式或系統服務,以方便跑 AIDA64 處理器&記憶體壓力測試
taskkill /F /IM 常駐.exe
chrome.exe
firefox.exe
iexplore.exe
LINE.exe
Skype.exe
MSOSYNC.EXE
GoogleUpdate.exe

net stop Services
net stop Spooler
net stop BITS
net stop wuauserv
net stop WSearch
net stop SDRSVC
net stop SysMain
文章關鍵字
改成一個主 喚醒另一個






@echo off
AIDA64 C:\AIDA\ /R /ALL /MHTML /SILENT
rar a -ag+YYYY_MM_DD_A_HHMM -r C:\AIDA\ "C:\AIDA\*.htm"
move "C:\AIDA\*.rar" C:\
timeout 1
taskkill /f /im WinRAR.exe( 中止RAR 這軟體在工作管理員內執行,路徑、名稱你要找一下,目前我電腦裝7ZIP)

網路上找到的▼





上面結束前再寫入一行呼叫下一個批次檔,
下一個批次檔執行刪除前timeout 時間拉長一點讓前一個批次檔關閉後再執行刪除動作應該可以






@echo off
timeout 10
rd C:\AIDA /s /q
timeout 1
那就使用echo xxx>delete.bat來讓該資料夾刪除
記得在delete.bat前面先加上timeout大概2秒,確定run.bat已經完全結束
================
run.bat

rem 你要跑的東西
echo rmdir xxx > del.bat
rem 如果把del.bat放在%temp%也是不錯的選擇
================

然後再讓delete.bat執行刪除動作,最後刪除它自己
只是記得,這個時候delete.bat是沒有管理員權限的,所以建議你把全部的AIDA資料夾放到%Userprofile%裡面,在這個資料夾中不需要系統管理員權限。
也就是說,你先讓run.bat跑完後,
然後你再用echo xxx > del.bat來弄一個新的.bat,再去執行刪除這件事
有無考慮過,把Run.bat從壓縮檔提出,由它負責整個行程執行:
@echo off

pushd "%~dp0"

REM 1.解壓縮到 C:\AIDA\
"C:\Program Files\WinRAR\Rar.exe" X AIDA6111.rar *.* "C:\AIDA\"

REM 2.執行 Run.bat 批次檔案 -> 略
REM 3.背景執行 AIDA64 Engineer 匯出一個硬體規格 .htm 網頁檔
pushd "C:\AIDA\"
START /WAIT aida64.exe /R /ALL /MHTML /SILENT

REM 4.RAR壓縮 .htm 網頁檔
REM 5.將剛壓縮完的 RAR 檔案移動到 C:\ 根目錄
"C:\Program Files\WinRAR\Rar.exe" a -agYYYY_MM_DD_A_HHMM -r "C:\" "*.htm"

REM 6.刪除 C:\AIDA\ 整個資料夾及其內容檔案
cd ..
rmdir /S/Q "C:\AIDA\"

pause
わため工場 wrote:
做不到刪除 C:\AIDA\ 整個資料夾


將ECHO 拿掉,不然你看不到錯在那

為什麼刪不掉 C:\AIDA\


因為你在 C:\AIDA\ ,你當然無法刪除這個目錄


刪你你目前在的目錄,你要 DOS 跳到那去?

要先移到其它目錄,再刪除
感謝上面各大神支援

最終弄成到五個批次檔達到俺的需求

i.bat 主:步驟1~5

@echo off
REM 等自解檔解壓完十秒,因俺環境還是在傳統硬碟而不是SSD,故給久一點時間
timeout 10
REM 背景執行AIDA64,抓取電腦軟、硬體及處理器記憶體壓力測試
REM ALL 改成 HW 就變成只抓電腦硬體規格
REM AIDA64詳細命令列請參考G神 aida64 command line 第一個連結
AIDA64 /R C:\AIDA\AIDA64-$DATE-$TIME /ALL /MHTML /LANGTW /SILENT
REM 等AIDA64完成輸出網頁檔十秒,AIDA64輸出時間較久,時間不足會造成網頁檔顯示硬體資訊不精確
timeout 10
REM 壓縮網頁檔
rar.exe a -ag+YYYY_MM_DD_A_HHMM -r C:\AIDA\ "C:\AIDA\*.htm"
REM 移動壓縮檔及自刪資料夾之副批次檔
move C:\AIDA\*.rar C:\
move C:\AIDA\o.bat C:\
REM 弄了老半天,無法自刪 C:\AIDA 資料夾的原因所在:
REM [程序無法存取檔案,因為檔案正由另一個程序使用。] 解決方法就是要先退出到上一層目錄
cd..
start C:\o.bat
exit


o.bat 副:步驟6

@echo off
REM 自動搜尋隨身碟
call C:\AIDA\AutoSearch.bat
timeout 5
REM 刪除 C:\AIDA 資料夾
rd C:\AIDA /s /q
timeout 1
REM 自刪批次檔後退出
del %0&exit


下面三個批次檔從友站抄來並修改成俺需求步驟7
AutoSearch.bat

@echo off
for %%i in (z,y,x,w,v,u,t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c) do call C:\AIDA\checku.bat %%i


checku.bat

@echo off
set upan=
REM 搜尋含有 aida6111.exe檔案的隨身碟
if not exist %1:\aida6111.exe goto ext >nul 2>nul
set upan=%1
C:\AIDA\func1.bat
:ext


func1.bat

@echo off
REM 移動已壓縮網頁檔的壓縮檔案到隨身碟 AIDA 資料夾裡
move C:\*.rar %upan%:\AIDA\





wusun wrote:
有無考慮過,把Run(恕刪)

不敢保證每台電腦會裝有WinRAR,故自解檔裡帶有 rar.exe 命令列版及Key檔
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!