Board logo

标题: [文件操作] 批处理如何获取一个文件名的字符长度是多少位? [打印本页]

作者: hijackle    时间: 2015-4-3 23:25     标题: 批处理如何获取一个文件名的字符长度是多少位?

本帖最后由 pcl_test 于 2016-9-19 21:23 编辑

问下,批处理如何获取一个文件名的长度是多少位?比如一个324df1fsf1.exe怎么判断出这个文件名长度是10位
作者: bailong360    时间: 2015-4-3 23:28

本帖最后由 bailong360 于 2015-4-3 23:29 编辑

http://www.bathome.net/thread-11799-1-1.html
http://www.bathome.net/thread-4057-1-1.html
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (324df1fsf1.exe) do (
  4.  set str=%%~nifedcba9876543210
  5.  set/a len=0x!str:~15,1!
  6. )
  7. echo 长度%len%
  8. pause
复制代码

作者: cobat    时间: 2015-4-4 10:13

  1. @echo off
  2. call :strlen "324df1fsf1.exe"
  3. pause
  4. :strlen
  5. set "$=%~n1#"
  6. setlocal enabledelayedexpansion
  7. for %%a in (256 128 64 32 16)do if !$:~%%a!. NEQ . set/aN+=%%a&set $=!$:~%%a!
  8. set $=!$!fedcba9876543210&set/aN+=0x!$:~16,1!
  9. echo %N%
复制代码

作者: pcl_test    时间: 2015-4-4 10:42

本帖最后由 pcl_test 于 2016-9-19 21:28 编辑
  1. @echo off
  2. set "str=324df1fsf1.exe"
  3. for /f %%a in ('mshta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(len(""%str%"")-4)"^)(close^)') do echo;%%a
  4. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2