if exist "folder\%a%" (
set /p x=< "folder\%a%"
SETLOCAL ENABLEDELAYEDEXPANSION&echo !x!&ENDLOCAL
)
Это в основном тот же код, что и в jeb, но ENABLEDELAYEDEXPANSION не влияет на путь, поэтому имена файлов с!все равно будет работать (%, вероятно, не будет работать, но это общая проблема с пакетными файлами и именами файлов)
set /p x= < .\somefile
- это что-то вроде хака, вы можете рассмотреть возможность использования FOR /F "tokens=*" %%A
...но FOR будет читать каждую строку, если вы не вставите if в DO.Таким образом, вы получите нечто ужасное, если захотите только первую строку:
set eof=0
for /F "tokens=*" %%A IN ('type "folder\%a%" 2^>nul') DO (
SETLOCAL ENABLEDELAYEDEXPANSION&(if "!eof!"=="0" (echo.%%A))&ENDLOCAL
set eof=1
)