Windows批处理文件:转换子文件夹中的所有文件

装饰

我需要编写一个批处理文件来转换每个子文件夹中的每个文件。我想到了以下解决方案:

set INDIR=<some path>  
set OUTDIR=<some path>

mkdir "%OUTDIR%" 
for /f "tokens=1*delims=." %%f in ('dir %INDIR% /b /a-d') do (
    rem %%f is file name
    rem %%g is extension
    call convert_one . %%f %%g
  )
)  

for /f "delims==" %%d in ('dir %INDIR% /ad /b') do ( 
  rem %%d is relative path
  mkdir %OUTDIR%\%%d
  for /f "tokens=1*delims=." %%f in ('dir %INDIR%\%%d /b /a-d') do (
    rem %%f is file name
    rem %%g is extension
    call convert_one %%d %%f %%g
  )
)  

问题是仅迭代第一级子文件夹。当我dir命令中添加/ s键时,它将返回完整路径,而不是相对路径。如何改进脚本以处理所有级别的子文件夹?PS:我需要相对路径文件名扩展名的单独值

MC ND
@echo off
    setlocal enableextensions disabledelayedexpansion

    set "INDIR=%cd%"
    set "OUTDIR=..\out"

    subst :: /d >nul 2>&1 & subst :: "%INDIR%"
    for /r "::\." %%a in  (*) do (
        if not exist "%OUTDIR%%%~pa" md "%OUTDIR%%%~pa"
        call convert_one  ".%%~pa" "%%~na" "%%~xa"
    )
    subst :: /d

这将创建一个辅助驱动器,因此驱动器的根指向in文件夹。然后遍历文件夹结构,在输出文件夹中重新创建结构,并使用指定的参数调用子例程

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在批处理文件的所有子文件夹中运行命令

在所有子文件夹中运行批处理文件

Tesseract-OCR可以在Windows cmd的所有子文件夹中批处理文件?

如何清除而不删除所有子文件夹中的所有文件(批处理文件除外)?

Windows 批处理文件:合并当前文件夹中的所有 .docx 文件?

批处理文件,用于获取文件夹中的所有文件名

如何对文件夹中的所有文件运行批处理文件?

使用批处理文件删除所有子文件夹?

Windows 批处理覆盖文件夹和子文件夹中的现有文件

批处理文件以在文件夹中创建新的子文件夹,将文件移动到目录中所有文件夹的新创建的子文件夹

批处理文件以启动XP开始文件夹中的所有程序

通过批处理文件从子文件夹中删除所有内容

批处理文件,删除目录中除最新文件夹外的所有文件夹

使用批处理文件为所有子文件夹中的所有文件名添加前缀

Windows文件中批处理文件中具有国际字符/突变/元音(ä。ö。ü)的文件夹中的FTP文件

递归地将文件夹名称附加到其中的文件并将所有文件移动到基本文件夹 Windows 批处理文件

批处理文件:如何将所有.doc文件备份到文件夹

批处理文件列出名为 #、A、B、C、D、到 Z 的子文件夹中的所有电影文件

批处理文件以搜索文件夹中的所有.csv文件以查找字符串

循环/批处理文件,用于从文件夹中的.m4a文件提取所有.aac

批处理文件:复制除一个文件夹外的所有文件和文件夹

简单的Windows批处理文件,它将文件复制到文件夹,并创建带有时间戳的子文件夹

如何使用批处理文件在系统文件夹中创建批处理文件

Windows批处理文件,通过子文件夹循环

将特定文件夹内的所有文件和文件夹复制到批处理文件中

批处理文件以使用计时器执行文件夹中的所有.exe

如何使用批处理文件删除2个特定文件夹中的所有内容?

在CMD批处理文件中包含子文件夹

如何计算批处理文件中的子文件夹