我有一个文件名
pp-sssss-iiii-12.0.111.22_31-i-P.0.16.1.1
我只想从名称(需要输出):
12.0.111.22_31
然后用.
替换0
并删除'_',以便我得到以下内容
1200011102231
好吧,我试图从这样的事情开始
cd %cd%
for %%F in (*.txt) do echo %%~nxF >>1.txt
但我不知道如何继续
编辑,代码:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=C:\Users\moudiz\Desktop\new folder\tttt"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*.pbd" '
) DO (
FOR /f "tokens=4delims=-" %%d IN ("%%a") DO (
SET "modname=%%d"
SET "modname=!modname:.=0!"
SET "modname=!modname:_=!"
ECHO %%a becomes !modname!
)
)
GOTO :EOF
pause
文件名
P-Script-LogFiles-1.0.33.33_123-IB-P.0.16.357.1.pbd
输出100033033123
答案 0 :(得分:1)
[注意:OP姗姗来迟地要求将名称的第一个标记添加到原始帖子生成的名称之前,因此使用下面的%%c
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*.txt" '
) DO (
echo File "%%a"
FOR /f "tokens=1,4delims=-" %%c IN ("%%a") DO (
SET "modname=%%d"
SET "modname=!modname:.=0!"
SET "modname=!modname:_=!"
ECHO %%a becomes %%c!modname!
)
pause
)
pause
GOTO :EOF
您需要更改sourcedir
的设置以适合您的具体情况。
使用delayedexpansion
,!var!指变量和set "var=!var:string=gnirts!" substitutes "gnirts" for "string" in
var and assigns the result back to
var`的修改值。
现在 - 你想用这个修改后的结果做什么,你没有透露 - 但是猜测重命名,
echo ren "%%a" "!modname!"
应该可以使用
要预先添加第一个令牌,只需将tokens=
更改为1,4
*即可选择第一个和第四个令牌) - 并将metavariable
中的for
更改为{ {1}}(为了使%%c
处理保持不变),然后使用%%d
,其中包含原始文件名在第一个%%c
之前的部分。