2013-04-04 116 views
0

林現在正努力提高我的舊腳本與你的知識列出文件夾和批量命名

這裏是我的真實腳本

@echo off 
SET DSESS=%CD:~22,6% 
SET SSESS=P_S013 
for /f %%i in ('dir /b /a-d %DSESS%_*.png') do (
convert %%i -resize 1500x1500 %%~ni.jpg 
) 

mkdir \\Nascfmj1\DOCNUM\partition\entier\%SSESS%\%DSESS% 
move *.jpg \\Nascfmj1\DOCNUM\partition\entier\%SSESS%\%DSESS% 

mkdir \\Nascfmj1\DOCNUM\partition\conservation\%SSESS%\%DSESS% 
copy *.png \\Nascfmj1\DOCNUM\partition\conservation\%SSESS%\%DSESS% 

copy *.pdf \\Nascfmj1\DOCNUM\partition\entier\%SSESS% 

convert *0001.png -resize 1500x1500 %DSESS%_COUV.jpg 
copy *_COUV.jpg \\Nascfmj1\DOCNUM\partition\pochette\%SSESS% 

正如你看到什麼奢侈

我跑從腳本I:\2013CAPTURE\b-p_98\P_1345 在實際情況下,如果我更改命名腳本的ciontaining文件夾不會識別正確的路徑(%CD:~22,6%

I:\2013CAPTURE\b-p_98\有來自P_1000開始實際P_1345 可我跑從I:\2013CAPTURE\b-p_98\腳本,並告訴批進入每個文件夾,用文件夾的名稱南明DSESS繼續腳本文件夾列表?還要注意的是該文件夾內的所有文件都與此typoology命名(P_1000_0001.png

謝謝您的寶貴幫助

回答

0
@ECHO OFF 
SETLOCAL 
:: 
:: These are YOUR relative-root (base of scanning tree) 
:: and destination 
:: No idea where SSESS appears from... :(
:: 
SET SSESS=P_5013 

SET relroot=I:\2013CAPTURE\b-p_98 
SET dest=\\Nascfmj1\DOCNUM\partition 

:: 
:: These are MY directories used for testing 
:: 
SET dest=C:\destdir\%ssess% 
SET relroot=u:\b-p_98 

SET entier=%dest%\entier\%SSESS% 
SET conservation=%dest%\conservation\%SSESS% 
SET pochette=%dest%\pochette\%SSESS% 

:: 
:: This is for a test - creating dummy files 
:: 3 directories, 3 ".png" files in each, 
:: 
FOR /L %%i IN (1000,1,1002) DO (
MD %relroot%\p_%%i 
FOR /L %%f IN (2000,1,2002) DO (
    dir>%relroot%\p_%%i\p_%%i_%%f.png 
) 
) 


:: 
:: Routine proper - create pochette 
:: 
MD %pochette% 
FOR /f %%a IN ('dir /ad/b "%relroot%\P_????" ') DO (
PUSHD "%relroot%\%%a" 
FOR /f %%i IN ('dir /b /a-d P_*.png ') DO (
    CALL :CONVERT %%i -resize 1500x1500 %%~ni.jpg 
) 

MD %entier%\%%a 
move *.jpg %entier%\%%a 

mkdir %conservation%\%%a 
copy *.png %conservation%\%%a 

copy *.pdf %entier% 

CALL :convert *0001.png -resize 1500x1500 %%a_COUV.jpg 
copy *_COUV.jpg %pochette% 

POPD 

) 

GOTO :eof 

:: 
:: I don't have CONVERT.EXE... 
:: 
:CONVERT 
ECHO execute command: CONVERT %* 
:: 
:: Two different situations: 
:: either create DUMMY .PDF and .JPG 
:: OR DUMMY _COUV 
ECHO %*|FINDSTR /i "couv" >NUL 
IF ERRORLEVEL 1 (
DIR >%4 
DIR >%~n4.PDF 
) ELSE (
DIR >%4 
) 
GOTO :eof 

這應該做的任務 - 好吧,我會幾乎沒有發佈它,如果沒有,我會嗎?

我不知道SSESS來自哪裏,所以我只是SET它在文件的開頭。

relroot被設定爲在掃描應該開始,dest到的文件將被移動或複製。我立即將它們重置爲我的測試目錄 - 我建議您進行測試,建立一個類似的實際數據樹。

然後entierconservationpochette目錄進行計算。

我在測試區創建了一些虛擬的「.png」文件和diretories。

我注意到你沒有在日常生活中使用pochette,所以我做了一個。

然後主程序 - 每個目錄名匹配P _ ????在目錄%relroot%又被分配到%%a,所以%%a取代%DSESS%

的PUSHD變化到所選擇的目錄名,你應該熟悉CONVERT命令。我調用了一個子程序來模擬.jpg的創建,同時創建了.pdf

.png已經被處理時,entier的子目錄被創建並且合適的.jpg被移動到它。與conservation.pdf相同的故事被複制到entier目錄。

最後,convert程序再次調用來完成*_couv.jpg文件,然後可以移動到pochette

的POPD恢復原來的目錄,我們將繼續,直到所有的目錄就完成了。

因此,這個例程可以從任何地方運行 - 不管目前的目錄是什麼。

良好的測試!

HTH

+0

非常感謝你,我要去檢查這個現在>> – 2013-04-08 07:38:22