批量更改文件扩展名

2023-12-03

简单的问题。 IMDU 命令执行

imdu /b file.imd file.raw

并将 file.imd 转换为 file.raw

我有很多 .imd,所以我需要一批。我努力了:

for %%x in (*.imd) do imdu /b %%x %%~nx.raw

但它不起作用并创建一个名为 %%.raw 的文件

我需要一个批处理来删除扩展名 imd 并将其替换为 raw。 我怎样才能做到这一点?


打开命令提示符窗口,运行for /?并仔细完整地阅读输出帮助。

有说明%~xI – only 文件扩展名 of %I – and %~nI – only 文件名 of %I – and %~nxI带扩展名的文件名 of %I。请注意,分配给区分大小写的循环变量的字符串并不重要I是真正存在或根本不存在的文件或文件夹。事实上它可以是任何字符串。

The 文件名参考与%~nI是最后一个反斜杠之后到最后一个点或字符串末尾的字符串。如果分配给循环变量的字符串以反斜杠结尾,即是文件夹路径,或者文件名以点开头并且没有真正的文件扩展名(如 UNIX/MAC 上的隐藏文件通常被命名),则它可以是空字符串。

The 文件扩展名参考与%~xI是从最后一个反冲后的最后一个点到分配给循环变量的字符串末尾的所有内容。所以%~xI引用名称类似的文件的文件名.htaccess并不是%~nI在这种特殊情况下,它是一个空字符串。一个名为.htaccess在 UNIX/MAC 上,文件的真实名称是htaccess and .文件名开头的 使该文件隐藏在 UNIX/MAC 文件系统上。

请注意,循环变量区分大小写,而修饰符如n, x, f, ... 不区分大小写。所以%~NXI%~nxI。一般来说,使用大写的循环变量和小写的修饰符具有更好的可读性。

这可能会让读者感到困惑,在某些特殊情况下也会让读者感到困惑。cmd.exe使用同时也是修饰符的字符作为循环变量意味着什么,例如在 cmd 窗口中运行命令行:

for %f in ("1. " "2. " "3. ") do @echo %~ffile

I不是修饰符,因此可以使用以下命令避免上面命令行的错误输出%I代替%f在 Windows 命令提示符窗口中运行时可以看到:

for %I in ("1. " "2. " "3. ") do @echo %~Ifile

现在很清楚%~ff被解释为对分配给循环变量的字符串的完全限定文件名的引用f while %~I被解释为引用分配给循环变量的字符串I删除双引号。

所以我建议避免使用这些字符之一ADFNPSTXZadfnpstxz作为循环变量,或者至少在使用它们时要小心。

出于所有这些原因,最好在批处理文件中使用以下命令行,其中百分号必须加倍:

for %%I in (*.imd) do imdu.exe /b "%%I" "%%~nI.raw"

对于这种简单的循环,使用ASCII字符不是字母或数字,对于 Windows 命令处理器没有特殊含义,例如:

for %%# in (*.imd) do imdu.exe /b "%%#" "%%~n#.raw"

在批处理文件中搜索所有出现的情况更容易#比在其他字符串中也多次出现的字母的所有出现要多。人物$作为循环变量也非常好,因为它也没有特殊含义,并且通常不存在于批处理文件中的其他字符串中。

不要忘记文件名周围的双引号,因为文件名中可能包含空格或圆括号或与号,这需要文件名周围的双引号。命令FOR在此用例中,循环变量中始终保留文件名而不用双引号引起来。

还有一个提示:

的用法FOR处理与通配符模式匹配的文件或文件夹,这些文件或文件夹通过执行的命令行重命名、移动或删除FORFAT32 和 exFAT 驱动器上的迭代存在问题,因为目录条目列表发生了更改FOR在循环迭代期间访问此列表。

例如,批处理文件中的以下命令行当前目录位于FAT32 or exFAT驱动器可能会导致临时文件被多次重命名。

for %%# in (*.tmp) do ren "%%#" "%%~n#_1.tmp"

在这种情况下,最好在批处理文件中使用命令DIR获取捕获的文件名列表FOR现在处理未由执行的命令行修改的文件名列表FOR每个文件名如下所示。

for /F "eol=| delims=" %%# in ('dir *.tmp /A-D /B /ON 2^>nul') do ren "%%#" "%%~n#_1.tmp"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

批量更改文件扩展名 的相关文章

  • 在 Jenkins 中执行批处理文件

    我有一个简单的批处理文件 我想要从 Jenkins 调用 运行 执行该文件 Jenkins 中有同样的插件吗 如何从 Jenkins 执行批处理文件 如果有相同的教程或文档 无需为此添加新插件 在Jenkins 选择您的工作名称并转到配置部
  • 如何在 PowerShell 中键入 TAB 字符?

    Task 默认情况下 在 Windows 命令提示符中按 TAB 键将输出文件名 而在 PowerShell 中则不会执行任何操作 我希望能够在交互模式下键入 TAB 字符 而不是通过脚本 Research 我在这个网站上和通过谷歌搜索发现
  • R 脚本自动化时的不同结果

    以下命令对 pdf 文件执行 Ghostscript 这pdf file变量包含该 pdf 的路径 bbox lt system paste C gs gs8 64 bin gswin32c exe sDEVICE bbox dNOPAUS
  • 批处理文件 FOR /f 标记

    任何人都可以逐行准确解释以下代码是如何工作的 我真的迷路了 我一直在尝试学习如何使用 FOR 命令 但我不明白这一点 echo off for f tokens delims f in myfile do set line f call p
  • 如何更改选项卡控件的名称

    我在 C WinForms 应用程序中使用选项卡控件 我想更改选项卡的标题 默认情况下它们是 tabPage1 tabPage2 等 一种无需代码即可实现的懒惰方法 选择选项卡控件 Go to properties use F4 to do
  • 如何从任何进程关闭 Windows 上的套接字(ipv4 和 ipv6)连接?

    如何在 Windows 上关闭 tcp v4 和 tcp v6 连接 我不想终止具有开放连接的整个进程 因为这显然会将其他人踢出该进程 我需要从一个单独的进程执行此操作 因此无法访问套接字句柄等 我正在使用 Windows API 来获取
  • 更改 mingw' 启动目录或创建 mingw 符号链接

    设置 mingw 控制台启动目录的最简单方法是什么 我只使用 mingw 进行编译 但由于缺乏编辑器甚至符号链接 我很困惑如何告诉 mingw 控制台出现在不同的目录而不是常规的主目录中 如果有人知道如何像 cygwin 那样将 真正的 符
  • 确定用于映射网络驱动器的域和用户名

    使用带有 SP1 的 Windows 7 Enterprise 但我希望得到适用于 Windows XP 2003 2008 Vista 7 的通用答案 从命令提示符处 我执行net use命令将 Z 驱动器映射到另一台计算机上的共享 但我
  • 如何在Windows上分离“Git bash”中启动的“git gui”?

    例如 我开始 git bash 我导航到某个目录 I start git gui 我关闭控制台窗口或按 Ctrl C Git gui 的窗口消失了 即使我用过git gui disown 即使当我按 Ctrl C 时它不在前台 如何正确分离
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • 需要 TensorFlow 依赖项。如何在 Windows 上运行 TensorFlow

    我有兴趣让 TensorFlow 在 Windows 上运行 但目前我意识到这是不可能的 因为某些依赖项无法在 Windows 上使用 例如巴泽尔 之所以出现这种需求 是因为据我目前了解 从 TensorFlow 访问 GPU 的唯一方法是
  • 如何从Windows阻止社交媒体[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想根据时间阻止我的电脑上的社交媒体 晚上 9 点后屏蔽 上午 11 点后解锁 如家长控制 我尝试过关注但失败了 创建了
  • 为什么我只能用管理员权限才能导入Python中的某些模块?

    我正在努力解决 Python 2 7 中的一些奇怪问题 我写了一个很长的工具 在其中导入不同的模块 我必须首先使用它安装pip 该工具将在公司内部共享 不同的用户在其特定机器上拥有不同的权限 当另一个用户登录我的计算机 我在那里拥有管理员权
  • 用于列出文件夹但排除特定文件夹的批处理脚本

    我希望此脚本列出文件夹名称中包含 deleted 的所有文件夹 但如果它们位于名为 done 的文件夹中则不列出 例如 列出文件夹 如果位于 C temp如果它在C temp random folder name但如果它在C temp do
  • 将 CrashDumps 转储到应用程序运行所在的同一文件夹中

    我编写了一个应用程序 我希望对其进行一定程度的自动调试 我想使用 Windows 错误报告将故障转储输出到应用程序运行所在的同一文件夹中 我的想法是 我可以让我的应用程序在它自己的文件夹中查找任何 dmp 文件 然后根据需要上传它们进行分析
  • SetCurrentDirectoryW 中的错误 206

    在我之后之前不清楚的问题 https stackoverflow com questions 44389617 long path name in setcurrentdirectoryw 我以某种方式能够创建一个具有长路径名的目录 但是
  • teracopy 如何替换默认的 Windows 副本

    我问了这个问题Windows 文件复制内部结构 动态加密 https stackoverflow com questions 24220382 windows file copy internals on the fly encryptio
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • Windows 目录永远不会包含临时文件的非 ASCII 字符?

    在 Windows 上使用 MinGW 7 3 0 由于 Windows 限制 Hunspell 无法从包含非 ASCII 字符的位置加载字典文件 我已经尝试了所有方法 1 现在我将文件复制到没有 ASCII 字符的路径 然后再将其交给 H
  • 在 VBA 中捕获 shell 命令的输出值?

    发现这个功能http www cpearson com excel ShellAndWait aspx http www cpearson com excel ShellAndWait aspx 但我还需要捕获 shell 的输出 有什么代

随机推荐