Dos批处理脚本:使用脚本操作完全删除变量



我在DosBox(0.74-3)上使用批处理文件,我有一个变量持有文件名。当我尝试使用%file_name:~0,-3%%file_name:.in=%(甚至%file_name:%)删除/替换文件扩展名时,它会完全删除变量-试图回显它打印"echo is off"。

我环顾四周,找不到一种方法来提取纯文件名通过dos批处理,或任何人有这个问题。要么建议的方法不工作的dos (~%n1)或它不适合我的应用程序。

修复可能会帮助我:

  1. 修复字符串操作
  2. 一种从包含路径&扩展(我发现删除路径,但扩展是杀了我)

我的代码:

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

最新更新