我试图在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位数字,甚至把"#“符号放在数字前面。
我也希望能够通过运行这两次来覆盖目标文件夹中的文件,但是访问被拒绝了。
请帮帮我!
谢谢
发布于 2013-12-12 16:13:36
下面的批处理文件根据请求从文件名中提取数字(最多有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!"
)https://stackoverflow.com/questions/20547052
复制相似问题