Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 删除文件名中的特定数字_Batch File_File Rename - Fatal编程技术网

Batch file 删除文件名中的特定数字

Batch file 删除文件名中的特定数字,batch-file,file-rename,Batch File,File Rename,我正在构建一个批处理文件,文件名中可能有10位数字,也可能没有。如果是10位数字,我想删除第一位数字 更具体地说,前导数字可能是1,在这种情况下,我希望将其删除 示例文件名:Softphone Test3_2020-12-08 15-23_13216549871.WAV 所需输出:Softphone Test3_2020-12-08 15-23_3216549871.WAV 在某些情况下,可能只有9位数字没有前导1,这是可以的,应该保持不变 如何实现这一点?@ECHO OFF SETLOCAL

我正在构建一个批处理文件,文件名中可能有10位数字,也可能没有。如果是10位数字,我想删除第一位数字

更具体地说,前导数字可能是1,在这种情况下,我希望将其删除

示例文件名:
Softphone Test3_2020-12-08 15-23_13216549871.WAV

所需输出:
Softphone Test3_2020-12-08 15-23_3216549871.WAV

在某些情况下,可能只有9位数字没有前导1,这是可以的,应该保持不变

如何实现这一点?

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
rem源目录、目标目录、目标目录的以下设置,
rem批处理目录、文件名、输出文件名和临时文件名[如果显示]是名称
我用于测试的rem,故意包含包含空格的名称,以确保
rem确认流程使用这些名称工作。这些将需要改变,以适应您的情况。
设置“sourcedir=u:\your files”
设置“destdir=u:\your results”
对于/f“delims=“%%b IN('dir/b/a-d”%sourcedir%\*.wav“'),请执行以下操作:(
设置“namepart=%%~nb”
如果“!namepart:~-11,1!”neq“\”ECHO REN”%sourcedir%\%%b“!namepart:~0,-11!!namepart:~-10!.wav”
)
后藤:EOF

建议的重命名为
echo
ed。将
echo-REN
更改为
REN
以执行实际重命名。

我建议将此代码用于任务:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
for /F "delims=" %%I in ('%SystemRoot%\System32\where.exe "*_???????????.wav" 2^>nul') do (
    set "FullName=%%I"
    set "FileName=%%~nxI"
    setlocal EnableDelayedExpansion
    ren "!FullName!" "!FileName:~0,-15!!FileName:~-14!"
    endlocal
)
endlocal
它只处理文件名末尾有十位数字的WAV文件,通过从十位数字中删除第一位数字来重命名这些文件

要了解所使用的命令及其工作方式,请打开一个窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面

  • echo/?
  • endlocal/?
  • 获取/?
  • ren/?
  • 设置/?
  • setlocal/?
  • 其中/?
阅读有关的Microsoft文档,以了解有关nul的说明。当Windows命令解释器在执行的命令之前处理此命令行时,重定向操作符必须在上用插入符号^转义,以便命令行被解释为文字字符,该命令行以单独的方式执行嵌入的其中的命令行命令进程在后台启动,并将
%ComSpec%/c
'
中的命令行作为附加参数附加。

\u 1(\d{9})\.
替换为
\u1\。