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

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






作業系統: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
2022-08-10 10:55 發佈
文章關鍵字 高手
改成一個主 喚醒另一個






@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檔
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?