Вы перешли к вызову с кавычками, поэтому вы должны сначала удалить его (или использовать usebackq
).
Также, когда вы тестируете, пока не используйте exit
.
Попробуйте, посмотрите,это работает:
(отформатирован, чтобы структура была более понятной, попробуйте комментарий @echo off
, чтобы получить более подробную информацию.)
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=*" %%a in ('dir *.md /b /o:-n /a:-d') do (
call :getLines "%%a"
)
pause
::exit
goto :eof
:getLines
set /A cnt=2
for /f "usebackq skip=4 tokens=*" %%b in (%1) do (
set /A cnt+=1
set "line!cnt!=%%b"
if !cnt! == 4 (
set "filename=%~n1"
set "blogdate=!filename:~0,10!"
set "blogtitle=!filename:~11!"
echo hello
echo !line3!
echo !line4!
echo !filename!
echo !blogdate!
echo !blogtitle!
goto :eof
)
)
goto :eof
for
примет ввод с кавычками в виде строки, а не файла.
%~1
удалит кавычки %1
.
Проверьте for /?
и call /?
для получения более подробной информации.