首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使批处理脚本仅从文件名中的数字创建文件夹

如何使批处理脚本仅从文件名中的数字创建文件夹
EN

Stack Overflow用户
提问于 2013-12-12 15:08:06
回答 1查看 356关注 0票数 0

我试图在windows 7上创建一个批处理脚本来执行以下操作:

我有另一个程序将文件转储到的文件夹。所有文件的名称中都有编号和其他识别信息。我想让一个批处理脚本搜索文件名中的所有数字,然后创建一个文件夹(文件夹名就是数字),并将包含这些数字的所有文件移动到文件夹中。它必须适用于我办公室的许多用户。

目前,我有一个非常糟糕的原始系统运行,没有错误的原因:

代码语言:javascript
复制
@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位数字,甚至把"#“符号放在数字前面。

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

请帮帮我!

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-12 16:13:36

下面的批处理文件根据请求从文件名中提取数字(最多有6组由其他字符分隔的数字组,这可能会被修改),因此您可以任意地操作它们;ECHO命令只是示例。注意,空格必须是eliminate变量中的最后一个字符。

代码语言:javascript
复制
@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!"
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20547052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档