2015-10-15 65 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

多数民众赞成它,谢谢! –

相关问题