String 使用批处理文件检查文件路径的长度#弦长

String 使用批处理文件检查文件路径的长度#弦长,string,batch-file,filepath,string-length,String,Batch File,Filepath,String Length,这是我的第一篇文章,我希望有人能帮助我 我对BAT文件相当熟悉,但是我对PHP和C++有基本的了解。 我需要编写一个批处理文件,该文件将执行以下操作: 1.显示当前文件夹中的所有文件,包括完整文件路径。 2.显示显示文件的长度,包括每个文件的文件路径。 3.可能显示总共有多少个文件 到目前为止,我已经写了这篇文章,它完成了任务#1和#3,但我无法让它显示字符串长度 @echo off for /r . %%g in (*.*) do ( echo %%g ) set cnt

这是我的第一篇文章,我希望有人能帮助我

我对BAT文件相当熟悉,但是我对PHP和C++有基本的了解。 我需要编写一个批处理文件,该文件将执行以下操作: 1.显示当前文件夹中的所有文件,包括完整文件路径。 2.显示显示文件的长度,包括每个文件的文件路径。 3.可能显示总共有多少个文件

到目前为止,我已经写了这篇文章,它完成了任务#1和#3,但我无法让它显示字符串长度

@echo off
for /r . %%g in (*.*) do (
    echo %%g
)       
set cnt=0
for %%A in (*) do set /a cnt+=1
set /A cnt=cnt-1
echo Dateien im Verzeichnis = %cnt%
PAUSE
我发现了另外两个脚本,每个脚本都标识字符串的长度或路径,但我无法将它们与我的第一个脚本放在一起

这里是一个字符串长度:

@echo off
set myvar="some string"
rem compute the length of a string
set #=%myvar%
set length=0
:loop
if defined # (
    rem shorten string by one character
    set #=%#:~1%
    rem increment the string count variable %length%
    set /A length += 1
    rem repeat until string is null
    goto loop
)
echo myvar is %length% characters long!
PAUSE
这是一个显示当前文件夹路径长度的片段:

@echo off
echo %cd%>"%TMP%\Temp.txt"
for %%l in ("%TMP%\Temp.txt") do set /a len=%%~zl
del "%TMP%\Temp.txt"
set /a len-=2
echo Path length = %len% chars.
PAUSE

这里有一个基于的解决方案。有关批处理脚本函数的详细信息。你也应该。即使不使用延迟扩展,也要在所有脚本的顶部

@echo关闭
setlocal
设置“文件=0”
对于(*)中的%%I,请执行以下操作(
设置/a文件+=1
调用:长度len“%%~fI”
rem//由于某些原因,延迟扩展%files%和%len%
延迟扩展
echo!files!:%%~fI是!len!个字符长。
端部
)
后藤:EOF
:长度
延迟扩展
如果“%~2”==”(设置ret=0),则设置ret=1
设置“tmpstr=%~2”
对于%%I in(4096 2048 1024 512 256 128 64 32 16 8 4 2 1),请执行以下操作(
如果不是“!tmpstr:~%%I,1!”=”(
设置/a ret+=%%I
设置“tmpstr=!tmpstr:~%%I!”
)
)
endlocal&设置“%~1=%ret%”
后藤:EOF

您可以插入脚本。有关批处理脚本函数的更多信息。我似乎无法让它工作。它为我的每个文件路径提供了一些随机数,如4…8…28,这些文件路径肯定更长。要你像你想象的那样为我把它拼凑起来会不会太过分?我想我在全局变量和局部变量方面有问题。肯定有什么不对劲。提前感谢,lukeIt可能是一个延迟扩张的问题。亲爱的罗乔,谢谢你的帮助。这管用!我的老板很高兴我们不必要求IT为我们下载一些粗略的免费软件。祝你度过愉快的一周,谢谢你所做的一切@如果我的答案是有用的,请考虑将它标记为接受。来解释为什么这很重要。