我想比较名字一堆文件像批调用另一个批处理,并使用输出变量
“BD12-CD9.txt”
来命名的文件夹
“BD12-CD9 - somefoldername”
我取出.TXT extensi打开以获取ID代码“BD12-CD9”并且想要检查文件夹名称是否包含代码。
我不知道如何做到这一点,没有一个比较字符串的if语句。 (可能是一个简单的解决方案,如jQuery的indexOf())
所以我需要从文件名中去掉ID代码并做一个直接比较。
问题是ID和名称并不总是完全相同的长度,例如“BD12-CD10.txt”,所以我不能只做“set folderName2 =!folderName:〜0,8!”
我找到了一个strlength函数,并把它放在另一个名为strlen.bat的批处理文件中,它工作的很好,回应了我剥离的ID代码的长度。我如何使用回显值?
move.bat
@echo off
@setlocal enabledelayedexpansion
set "errfolderpath=C:\Testing\Moving txt files automatically\"
echo.
for %%x in (*.*) do (
set fileName=%%x
set fileName2=!fileName!
set fileName2=!fileName2:~0,-4!
call strlen !fileName2!
FOR /D %%K in ("%errfolderpath%*") DO (
SET folderName=%%~nK
set folderName2=!folderName!
set folderName2=!folderName:~0,11!
echo folder: !folderName2!, file: !fileName2!
if !folderName2! == !fileName2! echo MOVE '!fileName!' to '!folderName!'
)
echo %_len%
echo.
)
PAUSE
strlen.bat
@echo off
:: strlen.bat
:: http://acm.zhihua-lai.com
if [%1] EQU [] goto end
:loop
if [%1] EQU [] goto end
set _len=0
set _str=%1
set _subs=%_str%
:getlen
if not defined _subs goto result
:: remove first letter until empty
set _subs=%_subs:~1%
set /a _len+=1
goto getlen
:result
echo %_len%
shift
goto loop
:end
谢谢MC ND,我快到了。你知道我会如何改变这个: 'set folderName2 =!folderName:〜0,11!' to use!_len!而不是11? – user1425011
@ user1425011'for %% z in(!_len!)do set folderName2 =!folderName:〜0,%% z!' –