.bat测量文件路径长度并将其放在.txt文件中

时间:2016-05-30 12:25:27

标签: batch-file

我正在尝试创建一个.bat文件,该文件将运行给定文件夹中的所有文件,测量文件+路径的长度以及是否长于例如。将50个字符的文件和路径写入.txt文件。

我几乎是一个n00b,所以不要先进,有点好解释;)。

使用

写入文件

echo%File%> filer.txt

文件应包含文件名和路径。

编辑: 对不起,我在描述它应该执行的任务时可能有点不清楚。我的目的是,循环文件和给定文件夹的子文件夹。并在文档中返回路径长于50的文件,包括Drive和Filetype。

2 个答案:

答案 0 :(得分:2)

正如Dennis已经指出的那样,批处理没有内置的解决方案来获得路径的长度。但是,如果您只想知道,如果字符串大于n,请检查n+1位置是否有字符:

if "%string:~51,1%" neq "" echo %string% is longer than 50 characters

比计算字符要快得多。

结合丹尼斯'逻辑:

@echo off
setlocal EnableDelayedExpansion
(
  for %%g in ("*") do (
    set "File=%%~dpnxg"
    if "!File:~51,1!" neq "" echo !File!
  )
)>filer.txt

我将整个for循环放到另一个块中,只将一次重定向到输出文件。这要快得多(>>会打开文件,写一行并关闭文件,只是再次打开它等等。)

答案 1 :(得分:1)

你可以用这个:

@echo off
setlocal EnableDelayedExpansion
for %%g in ("*") do (
set "File=%%~dpnxg"
>x echo !File!&for %%? in (x) do set /a strlength=%%~z? - 2&del x
if !strlength! gtr 50 echo !File! >> filer.txt
)

循环遍历当前文件夹中的所有文件,并将其驱动器,路径,名称和扩展名放在变量%File%中。然后它将%File%写入临时文件x,并从中获取stringlength,并删除x。如果字符串长度大于50,则将文件名写入filer.txt

你需要delayed expansion来处理循环中的变量。

注意,此代码目前使用驱动器,路径,文件名和扩展名。更改第set "File=%%~dpnxg"行以更改此行为([d]rive, [p]ath, [n]ame, e[x]tensiong是必需的)