【问题标题】:Replace "." to "_" in folders using CMD代替 ”。”使用 CMD 到文件夹中的“_”
【发布时间】:2016-05-20 04:19:20
【问题描述】:

如图所示,我有带有“。”的文件夹。在他们中,我想使用 CMD 用“_”替换这些是否有方法可以做到这一点。

【问题讨论】:

标签: cmd


【解决方案1】:

cmd.exe shell 脚本是比@echo off 更糟糕的方法:-)

但是没关系。

您可以使用增强的 shell 命令集来替换变量中的字符:

set DUH=FBB
echo %DUH:B=O%  -> FOO

因此,对于您的问题,您需要读取所有文件夹并将它们放入一个变量中,这样您就可以替换 .=_ 然后重命名。

第一批:rena.cmd 遍历您的文件夹

@echo off
for /D %%i in ( *.* ) do call rena2.cmd %%i

第二批:rena2.cmd 处理重命名

@echo off
setlocal enableextensions
setlocal enabledelayedexpansion

set TONAME=%~1

move %1 "%TONAME:.=_%"

exit /B

这可以在一个脚本中完成,随意摆弄它,我不会:-)

【讨论】:

  • CMD 脚本有它的位置,并且可以用于适当的目的。
  • 如果您调用标签而不是第二个文件,则无需担心文件是否移动到另一个位置。
【解决方案2】:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
FOR /f "delims=" %%a IN (
  'dir /b /ad "%sourcedir%\*.*" '
 ) DO (
 SET "dirname=%%a"
 SET "dirname=!dirname:.=_!"
 IF "!dirname!" neq "%%a" ECHO(REN "%sourcedir%\%%a" "!dirname!"
)

GOTO :EOF

您需要更改sourcedir 的设置以适应您的情况。

所需的 REN 命令仅用于测试目的ECHOed。 验证命令正确后,将ECHO(REN 更改为REN 以实际重命名文件。

Dimply 执行目录列表,将 . 更改为 _,如果进行了更改,请执行重命名。

【讨论】:

  • 我通常在 FOR 主体中使用 CALL 和标签来保持代码干净,但只要 env 变量保持正确的值,那么你就很好。
猜你喜欢
  • 1970-01-01
  • 2021-07-16
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 2020-05-16
  • 2014-08-23
相关资源
最近更新 更多