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

【已解决】指定目录,去掉文件名或子文件夹名里的空格

  [复制链接]
发表于 2022-7-30 16:28:26 | 显示全部楼层 |阅读模式
本帖最后由 linfeng_321 于 2022-7-31 10:45 编辑

需求:指定目录,去掉文件名或子文件夹名里的空格

目录:.\111\222
文件:123 _1.png、ab c_2.png、23 .png、23 4.jpg,等文件名(后缀名不限,xml、webp等等)
子文件夹:123 _1、ab c_2、23 、23 4,等文件夹名
发表于 2022-7-30 17:03:58 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. set "rootdir=.\111\222"
  5. cd /d "%rootdir%"|| exit /b
  6. for /f "delims=" %%A in ('dir /a /b /s^|sort /r') do (
  7.   set "name=%%~nxA"
  8.   ren "%%A" "!name: =!"
  9. )
  10. endlocal
  11. pause
复制代码
发表于 2022-7-30 18:52:11 | 显示全部楼层
  1. <# :
  2. cls&echo off&cd /d "%~dp0"&mode con lines=5000
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
  4. pause
  5. exit
  6. #>
  7. $folder=@(
  8. ".\111\222"
  9. );

  10. for($i=0;$i -lt $folder.length;$i++){
  11.     if(test-path -literal $folder[$i]){
  12.         $files=@(dir -literal $folder[$i] -recurse|sort {$_.FullName.length} -Descending);
  13.         for($j=0;$j -lt $files.length;$j++){
  14.             $fn=$files[$j].Name -replace ' ','';
  15.             $base=$files[$j].BaseName  -replace ' ','';
  16.             $filepath=$files[$j].FullName -replace '\\[^\\]+$','';
  17.             if($fn -ne $files[$j].Name){
  18.                     $newname=$fn;
  19.                     $newfile=$filepath+'\'+$newname;
  20.                     $n=2;
  21.                     while(test-path -literal $newfile){
  22.                             $newname=$fn+'('+$n.ToString()+')';
  23.                             if($files[$j] -is [System.IO.FileInfo]){
  24.                                     $newname=$base+'('+$n.ToString()+')'+$files[$j].Extension;
  25.                             }
  26.                             $newfile=$filepath+'\'+$newname;
  27.                             $n++;
  28.                     }
  29.                     write-host ($files[$j].FullName+' --> '+$newname);
  30.                     rename-item -literal $files[$j].FullName $newname;
  31.             }
  32.         }
  33.     }else{write-host ('"'+$folder[$i]+'" Not Found')}
  34. }
复制代码
 楼主| 发表于 2022-7-30 23:19:11 | 显示全部楼层
感谢大佬们,明天我测试下
 楼主| 发表于 2022-7-31 10:45:25 | 显示全部楼层
回复 2# flashercs


    红包已支付
 楼主| 发表于 2022-7-31 10:45:35 | 显示全部楼层
回复 3# zaqmlp


    红包已支付
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 01:33 , Processed in 0.013984 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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