在bat中如何提取不包括文件后缀的文件名

假如有一个 f 程序可以将jpg格式的图片转化成png格式的,
格式是这样的
f origin.jpg output.png
上面origin和output都是自己指定的文件名
我写的bat是
f "%1" %1.png
假如这个bat叫做cmd.bat吧
然后
cmd 123.jpg
会得到
123.jpg.png
我不想要原来jpg的文件后缀,请问该怎么写呢?谢谢

可以用这个代码处理:
@echo off
set /p str1= 请输入要替换的文件(夹)名中的字符串(空格亦适用):
set /p str2= 请输入替换后的文件(夹)名中的字符串(删除请直接回车):
for /f "delims=" %%a in ('dir /s /b ^|sort /+65535') do (
if "%%~nxa" neq "%~nx0" (
set "file=%%a"
set "name=%%~na"
set "extension=%%~xa"
call set "name=%%name:%str1%=%str2%%%"
setlocal enabledelayedexpansion
ren "!file!" "!name!!extension!" 2>nul
endlocal
)
)
exit
把这个贴到文本里面,改名为:批量修改当前文件夹下文件(夹)名中的任意字符.bat。把这个bat放入需要修改的文件夹,点击运行后,在第一行输入:.jpg,第二行直接回车,即可。
这个代码适合文件夹名或者文件名中的任何相同字符的修改,删除。同时可以同步修改子文件夹及其里面的文件哟。
希望可以帮助到你。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-03-05
f "%1" "%~n1.png"

在%1中间加上~n可以得到主文件名

第2个回答  2017-03-12
f "%1" %~n1.png