批處理新手入門導讀[視頻教程]批處理基礎視頻教程[視頻教程]VBS基礎視頻教程
[批處理文件精品]批處理版照片整理器[批處理文件精品]純批處理備份&還原驅動在線第三方下載
返回列表 發帖

[文本處理] [已解決]bat怎么把文件夾名相同字符中的第二個字符替換為指定字符?

比如把文件夾名稱中的第二個^字符改成00
例:把文件夾AB^CD^改成AB^CD00
該怎么實現呢?

本帖最后由 smss 于 2020-6-22 22:21 編輯
  1. @echo off&SetLocal EnableDelayedExpansion
  2. set /p strtemp1=要替換的文件名字符串(可替換空格):
  3. set /p strtemp2=替換后的文件名字符串(刪除則回車):
  4. for /f "delims=" %%i in ('dir /s /b') do (
  5. set "f=%%~nxi"
  6. set "f1=!f:%strtemp1%=%strtemp2%!"
  7. if not "%%i"==%0 (
  8. if not "!f!"=="!f1!" (
  9. if exist "!f1!" (
  10. echo 由于!f1!存在同名,!f! 文件名未改 ) else ren "!f!" "!f1!"
  11. )
  12. endlocal
  13. )
  14. )
復制代碼

TOP

回復 2# smss


    你好,你這個是直接把全部的都替換了。我是想把第二個給替換掉,第一個字符不變動
文件夾AB^CD^改成AB^CD00,是要把第二個的符號^改成00,而不是兩個都改掉。
這個能實現嗎?

TOP

  1. @echo off
  2. set "key=00"
  3. for /f "tokens=1,2* delims=^" %%i in ('dir /b /ad "*^*^*"') do (
  4. rename "%%i^%%j^%%k" "%%i^%%j%key%%%k"
  5. )
  6. pause&exit
復制代碼

TOP

本帖最后由 WHY 于 2020-6-22 23:56 編輯

PS C:\Users\WHY> 'AB^CD^改成AB^CD00' -replace '(?<=^[^^]*\^[^^]*)\^', '00'
AB^CD00改成AB^CD00

TOP

回復 4# went


    大神你好,有個小問題。如果文件夾名稱中的兩個字符是相鄰的就沒法工作
比如文件夾名稱是AB^^CD的話,運行后就提示找不到文件,我希望是能改成AB^00CD

TOP

回復 6# ChenCheChe
  1. //&cls&@ dir /b /ad | cscript -E:javascript -Nologo "%~0" &pause&exit
  2. var fso=new ActiveXObject("Scripting.FileSystemObject");
  3. var key="00";
  4. while(!WSH.StdIn.AtEndOfStream){
  5. try{
  6. var folder=fso.GetFolder(".\\"+WSH.StdIn.ReadLine());
  7. folder.Name=folder.Name.replace(/(\^[^^]*)\^/,'$1'+key);
  8. }catch(e){
  9. WSH.Echo(e.message);
  10. }
  11. }
復制代碼

TOP

其實純批也可以,在連續的^字符之間加空格,最后面加補位字符
  1. @echo off
  2. set "folderName=AB^CD^^"
  3. setlocal enabledelayedexpansion
  4. for /f "tokens=1,2* delims=^" %%i in ("!folderName:^= ^!$") do (
  5.     endlocal
  6.     set "s1=%%i"
  7.     set "s2=%%j"
  8.     set "s3=%%k"
  9.     setlocal enabledelayedexpansion
  10.     set "s3=!s3: ^=^!"
  11.     echo;ren "!folderName!" "!s1:~0,-1!^^!s2:~0,-1!00!s3:~0,-1!"
  12. )
  13. pause
復制代碼
輸出:ren "AB^CD^^" "AB^CD00^"

TOP

回復 7# went


    謝謝。好用

TOP

回復 8# WHY


    非常感謝

TOP

返回列表
中国体育彩票今日中奖号码