【问题标题】:DOS Batch file - Copy file based on filename into default folderDOS批处理文件 - 根据文件名将文件复制到默认文件夹中
【发布时间】:2013-05-16 09:20:19
【问题描述】:

我想使用批处理文件将它们放入默认文件夹,但帐户名称在文件夹中间。有可以在 dos 命令提示符下使用的脚本吗?

888123_AAAA_20130313.pdf  
888123_BBBB_20130313 (2).pdf  
888123_CCCC_20130313_2.pdf  
777456_AAAA_20130313.pdf  
777456_BBBB_20130313 (2).pdf  
777456_CCCC_20130313_2.pdf  

默认文件夹:

999-888123-03
666-777456-01

【问题讨论】:

  • 你是什么意思?哪个文件到哪个文件夹?
  • 你想把什么放在哪里?请解释一下。
  • 这些都是.pdf文件吗?它们总是以 5 位数字开头吗?它们都在同一个目录中吗?与文件相关的默认文件夹在哪里?请澄清您的帖子。

标签: batch-file dos filenames special-folders


【解决方案1】:
@echo off
setlocal EnableDelayedExpansion

rem Create the list of default folders
set folder[888123]=999-888123-03
set folder[777456]=666-777456-01

rem Copy the files
for /F "tokens=1* delims=_" %%a in ('dir /B /A-D *.pdf') do (
    copy "%%a_%%b" "!folder[%%a]!"
)

编辑:以下版本不需要初始化默认文件夹列表:

@echo off
for /F "tokens=1* delims=_" %%a in ('dir /B /A-D *.pdf') do (
   for /D %%d in (*_%%a_*) do (
      copy "%%a_%%b" "%%d"
   )
)

【讨论】:

  • 如果所有文件夹位于同一个驱动器(不同于文件的驱动器),只需将其插入目标文件夹的遗嘱卡(名称)即可。如果每个目标文件夹可能位于不同的驱动器中,请使用具有完整文件夹名称的第一个版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多