Batch file 剥离文件扩展名,但仅当其存在时

Batch file 剥离文件扩展名,但仅当其存在时,batch-file,Batch File,我有个问题 我想知道如何将文件扩展名从其名称中剥离,但前提是它首先存在,因此仅剥离最后四个字符是行不通的 我使用批处理 这导致我的delema: rem SETS THE NAME THE USER WANTS TO SAVE THE FILE AS... SET /P MY_NAME= FILE NAME: REM SAVES FILE AS INDICATED BY USER... ECHO %MYTEXT% > "%MY_DIR%\%MY_NAME%.txt" 我可以完全关

我有个问题

我想知道如何将文件扩展名从其名称中剥离,但前提是它首先存在,因此仅剥离最后四个字符是行不通的

我使用批处理

这导致我的delema:

rem SETS THE NAME THE USER WANTS TO SAVE THE FILE AS...
SET /P MY_NAME=   FILE NAME: 

REM SAVES FILE AS INDICATED BY USER...
ECHO %MYTEXT% > "%MY_DIR%\%MY_NAME%.txt"

我可以完全关闭扩展(第二行代码),但用户可能不会自己在那里添加扩展。

[记录此问题由@npocmaka回答]

要检查文件是否存在,请使用:

if [not] exist %myfile% (something)
要获取不带扩展名的文件名,请使用:

for /f %%F in (%myfile%) do ( echo %%~nF)

据我所知,Windows独家批处理。什么例子?我所掌握的只是如何去掉最后四个角色的刺。现在它不是很难,因为我的程序要求用户输入一个文件名,他们可能会实际键入带有扩展名的文件名,从而生成一个文件名,例如example.txt.txt或不生成example.txt。要检查文件是否存在,请使用
如果[不]存在%myfile%(某物)
。要获取不带扩展名的文件名,请使用
for/f%%f in(%myfile%)执行以下操作(echo%%~nF)
设置/P MY_NAME=文件名(不带扩展名):怎么样?