[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 tmplinshi 于 2022-12-5 16:21 编辑
  1. @echo off
  2. for %%a in (*.flac) do (
  3.     call :ReplaceSingleQuotes "%%~na" newNameNoExt
  4.     set "oldName=%%a"
  5.     setLocal enableDelayedExpansion
  6.     ffmpeg -y -i "!oldName!" -acodec pcm_s24le  -ar 48000  "!newNameNoExt!.wav"
  7.     endLocal
  8. )
  9. pause
  10. exit /b
  11. :ReplaceSingleQuotes <inputStr> <outputVar>
  12.     setLocal disableDelayedExpansion
  13.     set "inputStr=%~1"
  14.     set "inputStr=%inputStr:^^=^%"
  15.     set "outputVar=%~2"
  16.     set "outputStr="
  17.     if "%inputStr:'=%" == "%inputStr%" (
  18.         endLocal & set "%outputVar%=%inputStr%" & exit /b
  19.     )
  20.     set isLeftQuote=true
  21.     set leftQuote=‘
  22.     set rightQuote=’
  23.     setLocal enableDelayedExpansion
  24.     for /l %%i in (0 1 1000) do (
  25.         set c=!inputStr:~%%i,1!
  26.         if "!c!" == "" (goto :ReplaceSingleQuotes_Finish)
  27.         if "!c!" == "'" (
  28.             if !isLeftQuote! == true (
  29.                 set c=%leftQuote%
  30.                 set isLeftQuote=false
  31.             ) else (
  32.                 set c=%rightQuote%
  33.                 set isLeftQuote=true
  34.             )
  35.         )
  36.         set "outputStr=!outputStr!!c!"
  37.     )
  38.     :ReplaceSingleQuotes_Finish
  39.     endLocal & endLocal & set "%outputVar%=%outputStr%"
  40.     exit /b
复制代码
1

评分人数

    • 77七: 拜读大作,获益匪浅。技术 + 1

TOP

回复 14# 77七


是为了兼容文件名中含有^字符的情况。
比如以下代码显示的结果是 "^^_^^",而不是期望的 "^_^"。
  1. @echo off
  2. set str="^_^"
  3. call :sub %str%
  4. pause
  5. exit /b
  6. :sub
  7.     echo %1
复制代码

TOP

本帖最后由 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

评分人数

    • 77七: 又学到了,谢谢版主!技术 + 1

TOP

返回列表