Batch file 如何通过在文件扩展名.json之前插入字符串来重命名文件夹中的所有*.json文件?

Batch file 如何通过在文件扩展名.json之前插入字符串来重命名文件夹中的所有*.json文件?,batch-file,Batch File,我在apps\*.JSON中的不同文件夹中有JSON文件 如何通过在名称中添加后缀来重命名它们 a.json到a_file.json b.json到b_file.json 下面是我尝试过的,但它没有生成预期的文件名 @echo off & setlocal EnableDelayedExpansion for /f "delims=" %%i in ('dir /b *.json') do ( ren "%%i" "_file.json" ) 我怎样才能撤消这个操作 a

我在
apps\*.JSON
中的不同文件夹中有JSON文件

如何通过在名称中添加后缀来重命名它们

a.json
a_file.json

b.json
b_file.json

下面是我尝试过的,但它没有生成预期的文件名

@echo off & setlocal EnableDelayedExpansion 

for /f "delims=" %%i in ('dir /b *.json') do (
    ren "%%i" "_file.json" 
) 
我怎样才能撤消这个操作

a_file.json
a.json

以下带注释的批处理脚本应同时执行这两项操作:

  • 如果提供了非空参数,则添加
    \u文件
    后缀,以及
  • 如果未提供参数,则删除文件后缀
(如果指定了
dir/b/S
而不是
dir/b
,则即使在所有子文件夹中也是如此):

@ECHO关闭
SETLOCAL EnableExtensions EnableDelayedExpansion
::更改下三行以匹配当前情况:
将“后缀=_文件”后缀设置为添加/删除
设置“extens=json”文件扩展名
设置“folder=D:\test\SO\46404782”工作目录
::设置工作目录
pushd“%folder%”
如果“%~1”==”“(
快速眼动反转
对于/F“delims=“%%G in('dir/b*%后缀%。%extens%2^>NUL'),请执行以下操作:(
设置“newname=%%~G”
设置“newname=!newname:%suffix%。%extens%=。%extens%!”
ECHO ren“%%~fG”“!新名称!”
)
)否则(
添加后缀
对于/F“delims=“%%G in('dir/b*%extens%2^>NUL'),请执行以下操作:(
ECHO ren“%%~fG”“%%~nG%后缀%%%%~xG”
)
)
邻苯二胺
请注意,出于调试目的,仅使用
ECHO
显示有效的
ren
命令

样本输出

==> D:\bat\SO\46404782.bat
ren "D:\test\SO\46404782\c_file.json" "c.json"

==> D:\bat\SO\46404782.bat 1
ren "D:\test\SO\46404782\a.json" "a_file.json"
ren "D:\test\SO\46404782\b.json" "b_file.json"
ren "D:\test\SO\46404782\c_file.json" "c_file_file.json"

==>
资源(必读,不完整):

  • (命令参考)
  • (其他特殊性)
  • %~nG
    %~xG
    %~1
    等特殊页面)
  • !新名称:%suffix%。%extens%=。%extens%!
    等)

在命令提示符窗口中运行了一个添加
\u文件的简单解决方案:

for /f "delims=" %i in ('dir /b *.json') do @ren "%i" "%~ni_file.json"
在批处理文件中,
%
必须用一个以上的百分号转义:

for /f "delims=" %%i in ('dir /b *.json') do @ren "%%i" "%%~ni_file.json"
%~ni
%~ni
引用的文件名不带文件扩展名和路径,如在命令提示符窗口中运行时的帮助输出所述


另外使用DIR选项
/s
递归处理当前目录及其所有子目录中的所有*.json文件。

尝试此选项>感谢您提供详细答案。