【问题标题】:move two different file types with same name into a new folder with same name将具有相同名称的两种不同文件类型移动到具有相同名称的新文件夹中
【发布时间】:2016-10-20 19:04:24
【问题描述】:

假设我们在一个文件夹中有许多视频文件 (.mp4) 以及它们的字幕文件 (.srt),我想遍历所有文件,如果两个文件类型 ( mp4 & srt) 具有相同的名称,我想将它们移动到与它们中的任何一个具有相同名称的新文件夹中。如果文件夹存在,则移动,否则创建一个新文件夹。

我使用了两种方法来获取文件列表

@echo off

for %%a in (*.mp4 *.srt) do (
     comparison here )
pause

@echo off
for /f "delims=" %%f in ('dir /b *mp4* *srt*') do (
comparison procedure )
pause

我尝试将扩展名 (mp4) 的每个文件名存储在一个变量中,以检查它与所有其他具有扩展名 (srt) 但不起作用的文件,我可以毫无问题地使用文本标记

有什么想法吗?

【问题讨论】:

  • 如果文件夹存在且文件夹中已经存在文件,你想做什么?
  • 跳过文件并移动到下一个
  • 我会先遍历所有*.mp4 文件,然后检查是否存在同名的*.srt 文件,如下所示:for %%F in (*.mp4) do if exist "%%~nF.srt" ( ... )(同样适用于for /F/@987654327 @版本)
  • @aschipfl....获取 %%F 的名称部分并将 srt 添加到其中的好主意,让我们尝试一下

标签: batch-file cmd


【解决方案1】:

这应该可以满足您的需求。使用 FOR 变量修饰符是完成所需工作的关键。

@echo off

for %%G in (*.srt) do (
    IF EXIST "%%~nG.mp4" (
        MD "%%~nG" 2>nul
        IF NOT EXIST "%%~nG\%%~nG.mp4" move "%%~nG.mp4" "%%~nG"
        IF NOT EXIST "%%~nG\%%~G" move "%%~G" "%%~nG"
    )
)

【讨论】:

  • 你能解释一下“2>nul”部分吗?这是否意味着如果一个文件夹已经存在,那么输出将被转发到 nul 基本上什么都没有
  • 如果文件夹已存在,则仅显示错误消息。
  • 感谢@squashman...我想我的大脑不像以前那样工作了,哈哈
  • 嵌套两个if exist 查询并仅在目标位置中不存在任何文件(.mp4.srt)的情况下才移动这不是很聪明吗?无论如何,+1 ...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多