处理文件名中的特殊字符时批量重命名问题

2024-01-10

我在 c:\files 中有数百个 *.mp3 文件。里面有所有可以想象到的文件名,例如

  • milad.mp3(表现良好)
  • 嘿你.mp3(文件名中有空格)
  • systemofadown.mp3(长文件名)
  • howdy(1).mp3(文件名中的括号)

以及最后三个条件的任意组合。 我想将文件重命名为 001-test.mp3, 002-mp3, ... 哪个文件使用哪个名称并不重要。 已经编写了一个批处理文件来进行重命名。这是我的代码(添加了行号):

01  rem @echo off
02  cls
03  set _number=%1
04  lfnfor on
05
06  :F1TO10
07  IF NOT EXIST *.mp3. goto end
08  if %_number% gtr 9 goto F10TO100
09  for /f %%a IN ('dir /b *.mp3') do rename %%~na.mp3 00%_number%-test.mp4
10  set /a _number +=1
11  goto F1TO10
12
13  :F10TO100
14  IF NOT EXIST *.mp3. goto end
15  if %_number% gtr 99 goto F100TO1000
16  for /f %%a IN ('dir /b *.mp3') do rename %%~na.mp3 0%_number%-test.mp4
17  set /a _number +=1
18  goto F10TO100
19
20  :F100TO1000
21  IF NOT EXIST *.mp3. goto end
22  if %_number% gtr 999 goto end
23  for /f %%a IN ('dir /b *.mp3') do rename %%~na.mp3 %_number%-test.mp4
24  set /a _number +=1
25  goto F100TO1000
26
27  :end
28  for /f %%a IN ('dir /b *.mp4') do rename %%~na.mp4 %%~na.mp3
29  echo Done

此代码适用于良好行为的文件名(即没有空格、没有括号、长度不超过 8 个字符)。但是,如果我有一个文件名行为不良的文件,脚本就会中断(它会无限循环,直到我使用 Ctrl-C 停止它)。

问题显然是文件名问题。如何解决这个问题?有任何想法吗?我将非常感谢任何帮助。


Try %%~fsa.mp3代替%%~na.mp3.

如最后给出的http://www.ss64.org/viewtopic.php?id=93 http://www.ss64.org/viewtopic.php?id=93

或在长名称中添加引号..

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理文件名中的特殊字符时批量重命名问题 的相关文章

  • 在 Cygwin 软件包列表中找不到 Openssl

    这里说的是https github com joyent node wiki Building node js on Cygwin Windows https github com joyent node wiki Building nod
  • 如何从Windows阻止社交媒体[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想根据时间阻止我的电脑上的社交媒体 晚上 9 点后屏蔽 上午 11 点后解锁 如家长控制 我尝试过关注但失败了 创建了
  • 更改 Wi-Fi 配置文件的密码

    在我志愿服务的长期护理医院中 每个月的第一天 访客 Wi Fi 连接的密码都会更改 这给工作人员带来了大量的工作 也给患者带来了很多挫败感 其中许多人的行动能力非常有限 是的 真正的解决方案是让 IT 团队保留相同的密码 但这不会发生 大多
  • Windows 窗口对接

    我想知道如何在 Windows 中将窗口停靠 捕捉到屏幕的一侧 最好使用直接的 Win32 API 我正在寻找的效果就像任务栏 一个在屏幕上有保留空间的窗口 因此最大化另一个窗口会使该窗口占据屏幕的其余部分 但使我的窗口保持在适当的位置并可
  • 为什么我只能用管理员权限才能导入Python中的某些模块?

    我正在努力解决 Python 2 7 中的一些奇怪问题 我写了一个很长的工具 在其中导入不同的模块 我必须首先使用它安装pip 该工具将在公司内部共享 不同的用户在其特定机器上拥有不同的权限 当另一个用户登录我的计算机 我在那里拥有管理员权
  • 将 CrashDumps 转储到应用程序运行所在的同一文件夹中

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

    给定硬盘卷名 如何在 Windows 7 中使用批处理文件获取驱动器号 Using 电源外壳 questions tagged powershell Get WMIObject Win32 logicaldisk where volumen
  • Windows C++ 中的键盘钩子还是什么?

    我希望构建自己的应用程序 它可以将键盘命令 消息 发送到 Windows 操作系统 例如 当我按下组合键 ctrl shift n 时 我希望启动 notepad exe 我怎样才能做到这一点 您对所使用的概念有什么建议吗 我读过 何时使用
  • 非托管 C++ 中的默认打印机

    我正在寻找一种使用非托管 C 查找 Windows 默认打印机名称的方法 找到了大量 NET 示例 但非托管没有成功 谢谢 以下是如何获取当前打印机和默认打印机的列表 如果有一台设置为默认打印机 另请注意 如果用户没有打印机或未将打印机名称
  • Google Cloud SDK 无法安装“.exe;.bat;.com”不是可识别的命令

    我正在尝试在 Windows 10 笔记本电脑上安装 google cloud SDK 我尝试删除安装文件夹中的空格 并将路径添加到我的环境变量中 完整的错误是 Output folder C Users user Documents Do
  • 在有或没有 UNICODE 支持的情况下,如何在我的程序中使用 _stprintf?

    微软的 定义 stprintf as swprintf if UNICODE被定义 并且sprintf如果不 但这些函数采用不同的参数 在swprintf 第二个参数是缓冲区大小 但是sprintf没有这个 有人偷懒了吗 如果是这样 这就是
  • 如何在自托管 WCF 中获取多部分表单数据?

    我已经搜索了很长一段时间 但没有找到我要找的东西 我在 Windows 应用程序中自行托管了一个 http WCF 现在 在我的服务方法之一中 我需要接收一个文件和一些表单数据字段 在类似的问题中 情况要么发送一个文件 这是通过流数据然后转
  • Windows 10 上的 LibPNG 构建问题

    我试图在 Windows 10 上构建 libpng 以获取 win32 二进制文件 但我认为有一个与 awk 解析带有 CRLF 行结尾的文件相关的问题 我尝试使用 dos2unix 命令转换文件 但没有成功 结果相同 在 make 命令
  • 将 kinit 与 keytab 文件一起使用时会发生什么

    希望对kinit和keytab文件的使用有更多的了解 例如 如果我已经为某个服务生成了一个密钥表文件 该服务通过以下方式注册到活动目录 ktpass mapuser to someuseraccount ktab k mykeytab a
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • 批处理文件 FOR/f 扩展

    我有一个文件 directories txt 与目录名称 每个在一行上 我喜欢扩展该行 C Documents and Settings USERNAME My Documents 在我的脚本中以真实用户名运行脚本 然而 回声与线路完全相同
  • 为什么 Windows 命令 DIR 在搜索 *.tif 文件时也会输出 *.tiff 文件?

    我想使用 Windows 命令DIR为了找到唯一TIF文件 即具有扩展名的文件 tif 因此我使用以下小批处理文件 for f delims a IN dir b a d s C wolter testversion input tif d
  • 如何处理来自单独线程的窗口消息?

    我希望启动一个单独的线程来处理窗口消息 通过阻塞 GetMessage 循环 但之后仍然在初始线程中创建窗口 在单独的线程中 一旦启动 我就会调用PeekMessage使用 PM NOREMOVE 确保消息队列存在 有必要吗 然后 Atta
  • npm package.json bin 无法在 Windows 上运行

    我正在尝试通过 package json 启动我的 cli 工具bin财产 我有以下内容 name mycli bin bin mycli 当我在包路径中打开 cmd 并输入 mycli 时 它表示该命令无法识别 我应该运行 npm 命令吗
  • 如果我使用客户端计算机上未安装的字体,会发生什么情况?

    有人可以告诉我 如果我在 WinForms 应用程序中使用目标计算机上不可用的字体 会发生什么情况 它是否使用同一系列的字体 只是 Sans Serif 还是其他字体 您的应用程序将回退到 Segoe UI Tahoma 然后是 MS Sa

随机推荐

  • 为什么这两种确定打印列数的方法表现不同?

    使用这些 Unicode 范围Unicode GC字符串 https metacpan org module Unicode 3a 3aGCString scolumns返回打印列数mbswidth from 文本 字符宽度 https m
  • 如何将 React.memo 与包含子组件的组件一起使用

    我有两个组件 我将 Parent 包裹起来React memo Child const Child gt div I m Child div export default Child Parent const Parent props gt
  • 协议扩展似乎没有在消费者中强制执行变量?

    Say you protocol Able class var v UIView get set var x CGFloat get set 当然 当你使用 Able 时 如果你忘记了 v 或 x 这是一个错误 那挺好的 所以这样做 cla
  • SQL Server 2005 中的多个随机值

    我需要在 SQL Server 2005 下生成多个随机值 但不知怎的 这根本行不通 with Random Value as select rand Value union all select rand from Random sele
  • 使控件停靠和滚动条很好地发挥作用

    我有一个面板 有时需要比自然适合的更多的垂直屏幕空间 因此它需要能够垂直滚动 所以 一切都设置为自动滚动 这些控件包含在 TableLayoutPanel 中并设置为停靠 因此它们应该调整其宽度大小以匹配 然而 当控件触发滚动条时 它alw
  • 从 C# 中的字符串中删除空格?

    谁知道如何删除过多的字符串中的空格 例如 string myString I am going to work 有人知道进行这种修剪的好脚本吗 Regex Replace myString s 会做的
  • Vue 3 + Vite + Typescript - 开发和构建未拾取 TS 错误

    我正在使用 Vue 3 Vite 和 TypeScript 我想尝试使用 TypeScript 构建 Vue 项目 到目前为止 配置确实很困难 我一直在查看各种文档 但我正在努力实现我的目标 如果代码有问题 项目不应构建并抛出错误 我附上下
  • NumericUpDown 的 TextChanged 事件

    我正在使用 Microsoft Visual C 2010 Express 当我使用箭头更改 numericUpDown 的值时 我的按钮变为启用 但我还想在通过直接更改文本来更改 numericUpDown 的值时启用按钮 我正在使用以下
  • WCF 命名管道安全性和多用户会话?

    我已经设置了一个使用互斥锁的单实例 WPF 应用程序 如果您使用用户切换 这允许应用程序在每个用户帐户中运行 该应用程序设置了一个 WCF 命名管道 以便我可以从另一个进程与单个实例进行通信 即 当第二个进程在由于互斥锁而终止之前运行时 我
  • 如何在 Ansible 中执行多行 shell 脚本

    现在我在ansible中使用shell脚本 如果它在多行上 那么它的可读性会更高 name iterate user groups shell groupmod o g item guid item username more stuff
  • 无法解析“.NETCoreApp,版本=v2.1”的“Microsoft.NETCore.App (>= 2.1.0)”

    我正在尝试用以下方法解决 nuget 包dotnet restore 但出现以下错误 无法解析 NETCoreApp 版本 v2 1 的 Microsoft NETCore App gt 2 1 0 这是我的 csproj file
  • Android Studio 3.3 错误

    I recently upgraded to Android Studio 3 3 and I ve been working on projects using the IDE for the last week I ve noticed
  • 在 Java 堆空间异常上运行 Cucumber 测试后 Jenkins 构建失败

    使用 Jenkins 构建时出现以下异常 运行 Cucumber 测试后会引发此异常 谁能告诉我java堆空间上失败的确切位置吗 您知道可以采取什么措施来解决这个问题吗 一些背景 我在 Cucumber 测试期间有一个 java 堆空间 在
  • 如何将目录中自动生成的文件列表添加到 JS 文件中?

    我正在用 HTML5 编写一个在线游戏 其中一个文件包含资源列表 这些资源全部位于resources img 文件夹 现在我希望根据此文件夹的内容自动生成此列表 而不必每次添加新图像时手动更新它 我很确定 Grunt 可以做到这一点 但我不
  • 系统安全异常?

    描述 应用程序试图执行安全策略不允许的操作 要授予此应用程序所需的权限 请联系您的系统管理员或在配置文件中更改应用程序的信任级别 异常详细信息 System Security SecurityException 请求 System Secu
  • 将使用react-router v5完成的BreadCrumb组件更改为react router v6

    我想更改使用react router v5完成的BreadCrumb组件以反应router v6 import React from react import Breadcrumbs as MUIBreadcrumbs Link Typog
  • MySQL动态交叉表

    我有一个这样的表 way stop time 1 1 00 55 1 2 01 01 1 3 01 07 2 2 01 41 2 3 01 47 2 5 01 49 3 1 04 00 3 2 04 06 3 3 04 12 我想要一个这样
  • 如何使用 RESTEasy 代理客户端发送查询参数映射

    我正在寻找一种将包含参数名称和值的映射传递到 GET Web 目标的方法 我期待 RESTEasy 将我的地图转换为 URL 查询参数列表 然而 RESTEasy 抛出一个异常说Caused by javax ws rs Processin
  • 递归构建分层 JSON 树?

    我有一个父子关系数据库 数据如下所示 但可以以您想要的任何方式呈现 字典 列表列表 JSON 等 links Tom Dick Dick Harry Tom Larry Bob Leroy Bob Earl 我需要的输出是一个分层 JSON
  • 处理文件名中的特殊字符时批量重命名问题

    我在 c files 中有数百个 mp3 文件 里面有所有可以想象到的文件名 例如 milad mp3 表现良好 嘿你 mp3 文件名中有空格 systemofadown mp3 长文件名 howdy 1 mp3 文件名中的括号 以及最后三