CSVファイルを1行ずつ読み取り、行の長さが7999の場合は、別の何かをエコーしたいと思います。
私は次のように何とかして、各行を読み取り、各行の文字数をチェックしますが、問題は、%result%に値がなくecho(%result%
、空白の値が出力されることです。私がここで何を間違っているのか考えていますか?ありがとう
@echo off
setlocal
for /f "tokens=* delims= " %%a in (REPORTS.csv) do (
set "line=%%a"
call :strlen result line
echo(%result%
if %result% EQU 7999 (
echo %%a
echo(short=%result%
) else (
echo %%a
echo(long=%result%
)
pause
)
:strlen <resultVar> <stringVar>
(
setlocal EnableDelayedExpansion
set "s=!%~2!#"
set "len=0"
for %%P in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
if "!s:~%%P,1!" NEQ "" (
set /a "len+=%%P"
set "s=!s:~%%P!"
)
)
)
(
endlocal
set "%~1=%len%"
exit /b
)