我有一个文件名
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:UsersmoudizDesktopnew foldertttt"
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
[注意: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
varand assigns the result back to
var'。
现在 - 你想用这个修改后的结果做什么,你没有透露 - 但猜测重命名,
echo ren "%%a" "!modname!"
应该是可用的
要预置第一个标记,只需将tokens=
更改为1,4
*以选择第一个和第四个标记) - 并将for
中的metavariable
更改为%%c
(以便%%d
处理保持不变),然后使用%%c
它将包含第一个-
之前的原始文件名部分。