2015-10-15 66 views
-2

文件名應在文件名完成後創建。這些文件應該被複制(不移動),並且應該添加一個前綴。 這是我的實際蝙蝠從文件創建文件夾,將初始文件複製到文件夾並添加前綴

for /F "Tokens=*" %%i in ('Dir /B *.mp4') do md "%%~ni"|copy "%%i" "%%~ni"

到目前爲止是這種情況,但我沒能得到一個前綴加。該prefx應添加到文件夾中新創建的文件。

一種像「xy MB MB ay MB/s速度」這樣的進度條會很好,但不是必需的。

+1

這將輸出的進步,而你想什麼不工作添加前綴?例如,我認爲在堅持使用批處理文件的情況下,您不會獲得進度條,而是使用比Windows腳本主機更高的級別。不要爲你的問題添加太多變化:一個接一個地問一個問題。 – Marged

+0

我試圖添加Comand REN,但沒有運氣。它不一定要有「進度條」,只是關於剩餘多少MB的複製信息。但那不是強制性的。 –

+0

沒有。該文件夾是空的。我想這是因爲命令在錯誤的地方。嘗試/ F「Tokens = *」%% i in('Dir/B * .mp4')do md「%%〜ni」| copy「%% i」「%%〜ni」DO REN%i abc%我舉例 –

回答

0

試試這個

for /f "tokens=*" %%A in ('dir /b *.mp4') do (
    md "%%~nA" 
    copy "%%~fA" "%%~nA\prefix_%%~nxA" 
) 

這將複製abc.mp4 -> abc\prefix_abc.mp4

要輸出進度

@echo off 
setlocal 

set _cmd='dir /b *.mp4' 
set _prefix=movie_ 

set _progress_width=40 
set _progress_char1=+ 
set _progress_char2=- 
set _progress_char3=+ 
set _progress_fill=* 
set _count=0 
set _i=1 

rem Counting files 
for /f "tokens=*" %%A in (%_cmd%) do set /a "_count+=1" 

call :print_scale 

for /f "tokens=*" %%A in (%_cmd%) do (
    md "%%~nA" >nul 2>&1 
    copy "%%~fA" "%%~nA\%_prefix%%%~nxA" >nul 2>&1 

    rem Output progress 
    call :progress _i _count 
    call title Completed [%%_i%%/%%_count%%] 
    set /a "_i+=1" 
) 

endlocal 
exit /b 0 

:print_scale 
set /a "_width=_progress_width-2" 
set "_fill=" 
for /l %%B in (1,1,%_width%) do call set "_fill=%%_fill%%%%_progress_char2%%" 
echo %_progress_char1%%_fill%%_progress_char3% 
exit /b 0 

:progress 
call set _current=%%%1%% 
call set _total=%%%2%% 
set /a "_width=_progress_width" 
set /a "_pos=_width*_current/_total-_width*(_current-1)/_total" 
for /l %%B in (1,1,%_pos%) do echo|set /p _z=%_progress_fill% 
exit /b 0 

+--------------------------------------+ 
************* 
+0

多數民衆贊成它,謝謝! –

相關問題