【问题标题】:Copy multiple pdf files into another directory and every file creating folder with its name将多个 pdf 文件复制到另一个目录中,并且每个文件都以其名称创建文件夹
【发布时间】:2017-12-21 19:35:13
【问题描述】:

我有一个包含大约 150 个 pdf 文件的文件夹。我想以 150 个文件的名称创建文件夹。之后,我希望将 pdf 文件移动到其各自的文件夹中。它可以在 cmd 或任何 exe 文件中使用吗? 示例
E:\
|______ abc.pdf
|______ cde.pdf
|______ efg.pdf
F:\备份\

|______ abc
|____abc.pdf

|______ cde
|____cde.pdf

|______ efg

|____efg.pdf

【问题讨论】:

  • 你能分享一个你迄今为止尝试过的例子吗?

标签: batch-file cmd directory filenames


【解决方案1】:

未测试

@echo off

set "source=E:\"
set "target=F:\bckp"

for %%a in ("%source%*pdf") do (
    mkdir "%target%\%%~na"
    copy "%%~fa" "%target%\%%~na"
)

【讨论】:

  • 这几乎可以工作,但"%target%\%%~na" 必须是"%target%\%%~nxa" 否则你会丢失.pdf
  • @Tzalumen - 感谢您的注意,但在 OP 的示例中,文件夹的名称应该没有 .pdf 。文件的完整路径使用 %%~fa - 这将还包括扩展名
  • 哦,你说得对,我错过了一些东西。复制的工作方式(完整路径到完整路径),您需要copy "%%~fa" "%target%\%%~na\%%~nxa",对于完整路径为 E:\foo.pdf 的文件将解析为copy "E:\foo.pdf" "F:\bckp\foo\foo.pdf",而您示例中的代码将解析为copy "E:\foo.pdf" "F:\bckp\foo"在 F:\bckp 中生成一个名为 foo 的文件和文件夹。
  • @npocmaka 我应该指出,COPY C:\foo.bar C:\baz\foo.bar 的语法对于 COPY 是必需的,但对于 MOVE 则不需要。您的代码对于MOVE 是正确的。
猜你喜欢
  • 2018-08-06
  • 2023-02-08
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 2013-05-21
  • 2011-07-07
  • 2015-05-05
  • 1970-01-01
相关资源
最近更新 更多