我在DosBox(0.74-3)上使用批处理文件,我有一个变量持有文件名。当我尝试使用%file_name:~0,-3%
或%file_name:.in=%
(甚至%file_name:%
)删除/替换文件扩展名时,它会完全删除变量-试图回显它打印"echo is off"。
我环顾四周,找不到一种方法来提取纯文件名通过dos批处理,或任何人有这个问题。要么建议的方法不工作的dos (~%n1
)或它不适合我的应用程序。
修复可能会帮助我:
- 修复字符串操作
- 一种从包含路径&扩展(我发现删除路径,但扩展是杀了我)
我的代码:
dir /B %file_name%>temp.temp <- extracting the file name (still with extention)
set /p pure_name=<temp.temp
del temp.change_ext
set pure_name=%file_name:~0,-3% <- here pure_name will be empty
copy %file_name% %out_dir%%pure_name%.out >NUL
感谢编辑:我使用DosBox 8086,所以批处理脚本可能工作方式不同/有更少的选项。
找到了我想要的修复方法。我正在将具有新扩展名的文件复制到新文件夹中,因此可能不是所有用途:
rem getting the name of the file without path
if %errorlevel%==0 set /E pure_name = dir /B %file_name%
rem copying the file, while changing the extention
if %errorlevel%==0 copy %file_name% %out_dir%*.out >NUL