2013-12-12 48 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

相關問題