Batch file 将批处理文件压缩到一行

Batch file 将批处理文件压缩到一行,batch-file,Batch File,我正在编程创建一个批处理文件。我使用的语言(旧的delphi)的局限性意味着我无法将行分隔到.bat。所以我的批次必须是一条生产线 我已经读过了,并且能够浓缩其中的几行。但是使用双符号&对某些行不起作用,我也没有成功地使用ping暂停 这就是我现在的位置 @echo off & setlocal enableextensions&&set myfolder_=Z:\MyFolder for /f "delims=" %%f in ('dir /o:d /a:-d /b "

我正在编程创建一个批处理文件。我使用的语言(旧的delphi)的局限性意味着我无法将行分隔到.bat。所以我的批次必须是一条生产线

我已经读过了,并且能够浓缩其中的几行。但是使用双符号
&
对某些行不起作用,我也没有成功地使用ping暂停

这就是我现在的位置

@echo off & setlocal enableextensions&&set myfolder_=Z:\MyFolder
for /f "delims=" %%f in ('dir /o:d /a:-d /b "%myfolder_%\*.mp3"') do (set latest_=%myfolder_%\%%~nxf)
if defined latest_ (echo rem latest file "%latest_%"&xcopy "%latest_%" "Z:\MyFolder\PlayMe" /V /D /Y) else (echo No designated files found in "%myfolder_%")   
Pause

是否可以将代码行进一步减少为一行,以便批处理仍在运行?

您需要在setlocal中包含ENABLEDELAYEDEXPANSION并使用!瓦尔!首先,您应该使用一个而不是两个符号来代替%var%

。如果%errorlevel%==0,两个符号的工作方式类似于
。但是,使用单个
&
移动第2行和第3行仍然会破坏脚本。尝试将它们放在括号中…我将第2行放在括号中,前面加上
&
,并将其移动到第1行,得到了相同的结果。这就是你的意思吗?我相信你想要的是
line1&(line2)&(line3)
,但是,这个方案注定要失败,因为你使用的是
%var%
,在解析时会被(可能)一个空字符串替换。猜测一下,我建议您需要在
setlocal
中包含
enabledayedexpansion
,并使用
!瓦尔代替
%var%