Batch file 删除文件名中分隔符后的所有字符
我在目录中有文件名,格式为“APP_ENTITY_part_uuuuu20120910.txt” 我想去掉3个下划线后的所有内容,并保留文件名的第一部分 有没有一个好的网站可以指导我如何做到这一点 或者,也许你们中的一位dos批处理专家可以指导我如何做到这一点?您可以安装或(包括适当的库,如“重命名”程序)并使用(粘贴在下面)的前两个答案之一。在实现以下任一项之前,您可能需要测试正则表达式和glob:Batch file 删除文件名中分隔符后的所有字符,batch-file,dos,Batch File,Dos,我在目录中有文件名,格式为“APP_ENTITY_part_uuuuu20120910.txt” 我想去掉3个下划线后的所有内容,并保留文件名的第一部分 有没有一个好的网站可以指导我如何做到这一点 或者,也许你们中的一位dos批处理专家可以指导我如何做到这一点?您可以安装或(包括适当的库,如“重命名”程序)并使用(粘贴在下面)的前两个答案之一。在实现以下任一项之前,您可能需要测试正则表达式和glob: rename's/\\\\\\.txt/\.txt/'*\\\u part\\\\*.txt
rename's/\\\\\\.txt/\.txt/'*\\\u part\\\\*.txt
或
用于f in*.\u part.\u*..txt;do mv$f$(echo$f|sed's/\\\\.txt/\.txt/g');完成
有一个非常简单的解决方案,它使用变量扩展搜索和替换来插入REM命令
@echo off
setlocal
for %%F in (*) do call set "var=%%F" & call :procName
exit /b
:procName
::truncate at the 1st occurance of ___
set "var=%var:___="&rem %
::print the result
set var
exit /b
关键行是set“var=%var:_;=“&rem%”
假设var=Part1\uuuuuuu2
替换后,行变为:set“var=Part1”和rem Part2
上述解决方案在第一次出现\uuuuu
时截断
类似于Part1\uuuuuuuuu Part2\uuuuuuu Part3
的名称将导致Part1
如果要在最后一次出现\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
时截断,并得到类似第1部分\uuuuuuuuuuuuuuuu
我使用搜索和替换将\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
为您提供一个简单的单线解决方案:
set DirNam=%DirNam:~,-12%
如果您总是在名称末尾去掉4个下划线加上日期\uuuuuuuuuuuyyyymmdd
,这将非常有用
可以通过执行以下操作来整理其他目录名:
setlocal enabledelayedexpansion
for /d %%x in (*____????????) do (
set DirNam=%%x
set DirNam=!DirNam:~,-12!
echo %%x is now !DirNam!
)
我很想使用Cygwin或者更好的,但是在Linux上有一个shell脚本,但是我只限于dos批处理…公平的说,有时我们会受到其他人和系统的限制,祝你好运!在第一个示例中,您如何将其设置为第二个变量,而不是删除/截断“__”后面的其余变量?我假设它在'set'var=%var:\\\=“&…”中,但我无法计算出正确的语法。
setlocal enabledelayedexpansion
for /d %%x in (*____????????) do (
set DirNam=%%x
set DirNam=!DirNam:~,-12!
echo %%x is now !DirNam!
)