【问题标题】:Move Batch files to folder with similar name将批处理文件移动到具有相似名称的文件夹
【发布时间】:2019-12-27 16:41:52
【问题描述】:

我正在尝试将批处理文件移动到它们各自的文件夹中,它们具有相似的名称,希望我要移动的批处理文件最后具有“构建”。例如:

文件夹名称:wld-vine-tstrm

Bat 文件名:wld-vine-tstrmBuild.bat

在同一个父目录中,我也有与文件夹名称相同的批处理文件,我不希望这些文件移动,只移动文件名末尾带有“Build”的批处理文件。

setlocal enabledelayedexpansion
set folderpath=E:\Build\ModelBatches\world-wild\actor50
for %%f in (%folderpath%\*.bat) do (
  set "foldername=%%~nf"
  move "%%f" "!foldername:~0,-5!"
)

这与我正在寻找的结果非常接近;它将“构建”批次移动到相应的文件夹,但它也会从我不想移动的批次中删除最后 5 个字符。

以下批处理文件现在缺少最后 5 个字符“tstrm”

总而言之,一个目录下的每个文件夹都有两个批处理文件,我只想将一个以“Build”结尾的移动到它的文件夹中。

【问题讨论】:

  • 这能回答你的问题吗? batch copy/move files to folders with same name
  • 那你为什么不用*Build.bat 而不是*.bat 呢?
  • 那行得通,不知道我是怎么错过的。谢谢。
  • move 命令行更改为move "%%~f" "!foldername:~0,-5!\"(注意尾部的反斜杠),因此您可以强制将目标解释为文件夹并避免文件被重命名...

标签: windows batch-file


【解决方案1】:

你应该使用这个:

setlocal enabledelayedexpansion 
set folderpath=E:\Build\ModelBatches\world-wild\actor50 
for %%f in (%folderpath%\*build.bat) do ( 
  set "foldername=%%~nf" 
  move "%%f" "!foldername:~0,-5!" 
)

通配符*build.bat 查找所有以“build”结尾的批处理文件,但通配符“*.bat”显示所有批处理文件。

【讨论】:

  • Wasif Hasan,是否有一个特殊的原因导致您倾向于在 OP 确认之前重复其他人的 cmets 作为答案,并且,在这种情况下,在评论和回答确认后?很明显,你的回答没有解决任何问题,我有。
  • 不,我在 OP 回答之前就开始回答了。
  • 除非输入至少需要 20 分钟,否则从技术上讲,它仍然是我之前的评论的重复,(不是吗)?
  • 无论如何,谢谢。我会尽量减少这类答案。功劳归您所有。
  • @com:如果你知道答案,你为什么要发表评论?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 2022-11-25
相关资源
最近更新 更多