我想比較名字一堆文件像批調用另一個批處理,並使用輸出變量
「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!' –