2015-09-18 71 views
0

我已經在MAXScript的腳本幾年作爲一種業餘愛好,最近纔開始使用批處理文件擺弄(所以我很是新手)。如何添加ATTRIB到重命名的文件中FOR循環批處理

我有2個問題:我想申請ATTRIB到一個文件中的一個循環之後,我改名爲擴展名(通過文件列表去)。這裏是我到目前爲止(代碼爲我在網上找到該批處理的窗口標題添加一個進度%):

set n=0 
for /r %~d0\$RECYCLE.DATA\$DELETED\[_$G]\ %%f in (*.jpg) do set /a n+=1 
echo File count = %n% 

rem Fill "bar" variable with 70 characters 
set "bar=" 
for /l %%i in (1,1,70) do set "bar=!bar!|" 

rem Fill "space" variable with filler spaces 
set "space=" 
for /l %%i in (1,1,1) do set "space=!space!" 

rem "Process" the files and show the progress bar in the title 
set i=0 

for /r %~d0\$RECYCLE.DATA\$DELETED\[_$G]\ %%f in (*.jpg) do (
    set /a i+=1, percent=i*100/n, barLen=70*percent/100 
    for %%a in (!barLen!) do title !percent!%% !bar:~0,%%a!%space% 
    ren "%%f" "%%~nf.g" 
    attrib +s +h "%%~nf.g" REM DOESN'T WORK!! 
    echo !i!: Collapsing $G %%~nxf 
) 

我試圖在該行「ATTRIB + S + H一些變化「%%〜nf.g」REM不起作用!!「與%% f,但它給我一個錯誤,它無法找到該文件(我想它會被重命名)。我們如何將attrib + h + s添加到剛剛重命名的循環中的特定文件?

第二個問題是我如何申請「ATTRIB + S + H」的父文件夾和它本身的唯一子文件夾,但不能碰裏面的所有文件?批處理文件位於父文件夾之外。

我想要做的是重命名父文件夾的子文件夾內的目錄內的文件擴展名,將attrib + h + s應用於其各自子文件夾內的每個重命名文件,然後一旦完成attrib + h + s只是文件夾本身,但不能觸摸文件,因爲它們已經被處理。 (我想在兩個單獨的通行證中執行文件和文件夾,以便我可以在上面的代碼中看到進度百分比)。

感謝您的幫助,我真的很感激!

編輯:我有我的腳本的頂部,這些設置 - >

setlocal EnableExtensions 
setlocal EnableDelayedExpansion 
+0

只是一味'ATTRIB + H + S 「%%〜nf.g」' –

+0

不幸的是這不起作用,它說沒有找到文件: –

+0

'任 「%% F」「%%〜NF 「g」 echo!i !:重命名$ G文件:%%〜nxf attrib + h + s「%%〜nf.g」REM不工作! echo!i !: attrib + h + s $ G file:%%〜nxf' –

回答

0

你嘗試

attrib +s +h "%%~nf.g" 
+0

試過了,它沒有給我找到文件。 –

+0

嘗試ATTRIB + S + H 「%%〜pf的%%〜nf.g」 – Jayapal

+0

ATTRIB + S + H「%%〜PF %%〜nf.g作品!感謝您的幫助!現在我該怎樣處理ATTRIB + h + s到第二遍中的子文件夾(根本不處理文件)? –

0

與這些線測試它包括,看看被重命名開始。

echo ren "%%f" "%%~nf.g" 
echo attrib +s +h "%%~dpnf.g" 
pause 
+0

感謝您花時間回覆,上面的代碼適用於我(由Jayapal提供)attrib + s + h「%%〜 PF %%〜nf.g」 –