請教各位前輩:
想用批次檔跑網域電腦中Backup資料夾有幾個ZIP以及檔案大小,
但實際跑出來變數值都是空的,不曉得是哪裡出錯了,請指教小弟~感謝!
程式碼如下:
@Echo off
for /f "skip=3 tokens=1,2* delims=\ " %%a in ('net view') do (
for /f "tokens=1,3" %%i in ('dir/-c "\\%%a\d$\Backup\*.zip"/s^|find "個檔案"') do set Total=%%i&&set Totalsize=%%j
set /A iValue=%Totalsize%/1048576
echo 電腦名稱是:%%a
echo 檔案數是:%Total%
echo 總容量是:%Totalsize%
echo 運算過是:%iValue% M
)
結果:
電腦名稱是:CHRIS
檔案數是:
總容量是:
運算過是: M
請按任意鍵繼續 . . .
電腦名稱是:GRACE
檔案數是:
總容量是:
運算過是: M
請按任意鍵繼續 . . .
如果只執行這顯示是正常:
for /f "tokens=1,3" %%i in ('dir/-c "\\CHRIS\d$\Backup\*.zip"/s^|find "個檔案"') do set Total=%%i&&set Totalsize=%%j
set /A iValue=%Totalsize%/1048576
echo 電腦名稱是:%%a
echo 檔案數是:%Total%
echo 總容量是:%Totalsize%
echo 運算過是:%iValue% M
結果:
電腦名稱是:CHRIS
檔案數是:4
總容量是:149404499
運算過是:142 M
開延遲環境變數擴充,
試試。
@Echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "skip=3 tokens=1,2* delims=\ " %%a in ('net view') do (
for /f "tokens=1,3" %%i in ('dir/-c "\\%%a\d$\Backup\*.zip"/s^|find "個檔案"') do set Total=%%i&&set Totalsize=%%j
set /A iValue=!Totalsize!/1048576
echo 電腦名稱是:%%a
echo 檔案數是:!Total!
echo 總容量是:!Totalsize!
echo 運算過是:!iValue! M
)
可以參考一下 http://ithelp.ithome.com.tw/questions/10184378 下方我的部分的回答...
感謝~~測試可行!!!~~太感謝了!!
只可惜檔案超過4G會出現『不正確的數字。數字限制為 32 位元精確度。』
@Echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "skip=3 tokens=1,2* delims=\ " %%a in ('net view') do (
for /f "tokens=1,3" %%i in ('dir/-c "\\%%a\d$\Backup\*.zip"/s^|find "個檔案"') do set Total=%%i&&set Totalsize=%%j
set /A iValue=!Totalsize!/1048576
echo 電腦名是:%%a
echo 檔案數是:!Total!
echo 總容量是:!Totalsize!
echo 運算過是:!iValue! M
set Total=
set Totalsize=
set iValue=
)
參考看看原則上OK,沒有實測!
@Echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "skip=3 tokens=1,2* delims=\ " %%a in ('net view') do (
for /f "tokens=1,3" %%i in ('dir/-c /W "\\%%a\d$\Backup\*.zip"/s^|find "個檔案"') do (
set /A iValue=%%k/1048576
echo 電腦名稱是:%%a
echo 檔案數是:%%i
echo 總容量是:%%k
echo 運算過是:!iValue! M
))
差異的地方在於