2013-12-12 29 views
0

我试图创建Windows 7的一个批处理脚本执行以下操作来创建只有数字的文件夹:如何使一个批处理脚本文件名

我有另一个程序转储文件的文件夹。 所有文件都有其名称中的数字以及其他标识信息。 我想要批量脚本搜索文件名中的所有数字,然后创建一个文件夹(文件夹名称只是数字),并将包含这些数字的所有文件移动到文件夹。 它必须适用于我办公室的众多用户。

目前,我有一个非常坏的原始系统运行不占的错误:

@echo off 

setlocal enabledelayedexpansion 

pushd "%USERPROFILE%\Desktop\RawFiles" 

for %%a in (*) do (

    set fldr=%%~na 

    set fldr=!fldr:~0,5! 

    md "!fldr!" 

    move "%%a" "!fldr!" 

) 

popd 


if not exist "%USERPROFILE%\Dropbox\agents" mkdir "%USERPROFILE%\Dropbox\agents" 

SET "src_folder=%USERPROFILE%\Desktop\RawFiles" 

SET "tar_folder=%USERPROFILE%\Dropbox\agents" 

for /f %%a IN ('dir "%src_folder%" /b') do move /-y %src_folder%\%%a %tar_folder% 


exit 

the files in the "rawfiles" folder are as follows: 

12345 - tech pack.pdf 

12345.pdf 

12345-artwork.AI 

"#12345- artwork.AI" 

我创造了只适用于在数字来首次在文件和正好5 不幸的是完美的情况下,这里存在很多人为错误,所以这个解决方案不可行。 一个错误的例子是一个偶然的6位数字,或者甚至在数字前加上“#”号

我也希望能够通过运行两次来覆盖目标文件夹中的文件,拒绝访问”。

请帮忙!

感谢

回答

1

下面提取从文件名称作为请求的数字(最大6组的其他字符分隔位,这可以被修改)的批处理文件,所以你可以操纵它们在你希望的任何方式; ECHO命令就是例子。请注意,该空格必须是eliminate变量中的最后一个字符。

@echo off 
setlocal EnableDelayedExpansion 

set "eliminate=#-abcdefghijklmnopqrstuvwxyz " 

for %%a in (*.*) do (
    for /F "tokens=1-6 delims=%eliminate%" %%b in ("%%~Na") do set folder=%%b%%c%%d%%e%%f%%g 
    if not exist "!folder!" ECHO md "!folder!" 
    ECHO move "%%a" "!folder!" 
) 
+0

谢谢!!!像魅力一样工作 – user3095874

相关问题