找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: kimycai

[文本处理] 【已解决】求助批处理如何在输出文件名的时候,将特定的英文单引号字符替换掉呢?

[复制链接]
 楼主| 发表于 2022-12-5 19:08:03 | 显示全部楼层
回复  kimycai


        
这样估计好理解了..“=”前后是被替换和替换后的内容
77七 发表于 2022-12-5 17:10



    就是把 !out1:'=‘! 再赋值给out2的意思吗
发表于 2022-12-5 19:28:47 | 显示全部楼层
回复 16# kimycai


   对
发表于 2022-12-5 19:34:40 | 显示全部楼层
回复 11# kimycai


字符串替换,参考set命令教程第9页
http://bbs.bathome.net/thread-31727-1-1.html

 楼主| 发表于 2022-12-5 19:46:06 | 显示全部楼层
本帖最后由 kimycai 于 2022-12-5 19:50 编辑

回复 18# Batcher


    多谢admin指路!
发表于 2022-12-5 19:56:55 | 显示全部楼层
回复 14# 77七


是为了兼容文件名中含有^字符的情况。
比如以下代码显示的结果是 "^^_^^",而不是期望的 "^_^"。
  1. @echo off

  2. set str="^_^"
  3. call :sub %str%
  4. pause
  5. exit /b

  6. :sub
  7.     echo %1
复制代码
发表于 2022-12-5 20:14:47 | 显示全部楼层
回复 20# tmplinshi


   原来^字符在call语句中会多出来一个,谢谢版主!
 楼主| 发表于 2022-12-8 00:11:28 | 显示全部楼层
中文的引号不是分左右的吗?
77七 发表于 2022-12-5 11:35



    但是,在遇到文件名中有英文感叹号时,这条命令就会被忽略跳过,该怎么修改呢?
发表于 2022-12-8 00:45:29 | 显示全部楼层
本帖最后由 tmplinshi 于 2022-12-8 00:46 编辑
  1. @echo off
  2. setlocal disabledelayedexpansion

  3. for %%a in (*.flac) do (
  4.     set "in=%%~na"
  5.     setlocal enabledelayedexpansion
  6.     set "out=!in:'=‘!"
  7.     ffmpeg -y -i "!in!.flac" -acodec pcm_s24le  -ar 48000  "!out!.wav"
  8.     endlocal
  9. )
复制代码

评分

参与人数 1技术 +1 收起 理由
77七 + 1 又学到了,谢谢版主!

查看全部评分

发表于 2022-12-8 03:06:26 | 显示全部楼层
本帖最后由 77七 于 2022-12-8 03:21 编辑

回复 22# kimycai


   我还是第一次遇到这样的情况,看了版主的回答,在站内搜了下,原来文件名中的感叹号会被当作表示延迟变量的符号,被省略了...

http://www.bathome.net/thread-4872-1-1.html     8楼总结

https://www.cn-dos.net/forum/viewthread.php?tid=30884###

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "a=Adele - !Hello.flac"
  4. set "b=Adele - !Hello!.flac"
  5. echo !a!
  6. echo !b!
  7. pause
  8. endlocal


  9. @echo off
  10. set "a=Adele - !Hello.flac"
  11. set "b=Adele - !Hello!.flac"
  12. echo %a%
  13. echo %b%
  14. pause
复制代码
发表于 2022-12-8 03:11:29 | 显示全部楼层
这也让我想起了,有次我看到一个版主的教学帖子,延迟变量要在for语句里面写开始和结束
 楼主| 发表于 2022-12-8 08:32:53 | 显示全部楼层
本帖最后由 kimycai 于 2022-12-8 09:02 编辑
tmplinshi 发表于 2022-12-8 00:45



    转换不了,提示“09 - Asuka Strikes.flac: No such file or directory”,且flac文件没有被转换掉,原本的文件名是“09 - Asuka Strikes!.flac”
 楼主| 发表于 2022-12-8 08:43:00 | 显示全部楼层
本帖最后由 kimycai 于 2022-12-8 09:02 编辑

回复 25# 77七


    转换不了,提示“09 - Asuka Strikes.flac: No such file or directory”,且flac文件没有被转换掉,原本的文件名是“09 - Asuka Strikes!.flac”,该如何修改呢
 楼主| 发表于 2022-12-8 08:51:30 | 显示全部楼层
回复 25# 77七


    如果引用时不用感叹号,是不是可以用其他方法来代替感叹号的引用呢,这样问题是不是能解决?
 楼主| 发表于 2022-12-8 08:58:02 | 显示全部楼层
回复 25# 77七


    是不是不保留感叹号会更好处理,但是感觉替换不掉感叹号
 楼主| 发表于 2022-12-8 09:34:10 | 显示全部楼层
回复 26# kimycai


    是我贴错代码了,开头没有disable
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:36 , Processed in 0.022356 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表