私はこれをどこからでも探していますが、見つからなかったので、やりたいことは簡単です。ファイル名にアンダースコアを数え、変数に入れたい後でそれを使用してください。ファイル名の下線をバットでカウントする
これを行う簡単なバッチコードはありますか?
私はこれをどこからでも探していますが、見つからなかったので、やりたいことは簡単です。ファイル名にアンダースコアを数え、変数に入れたい後でそれを使用してください。ファイル名の下線をバットでカウントする
これを行う簡単なバッチコードはありますか?
@echo off
setlocal enabledelayedexpansion
set filename=__example_file.bin_
set cnt=0
set pos=0
:loop
if "!filename:~%pos%,1!"=="_" set /a cnt=%cnt%+1
set /a pos=%pos%+1
if not "!filename:~%pos%,1!"=="" goto loop
echo Count: %cnt%
このコードはかなり醜いですが、私はこれまでのところより良い方法を見つけることができません。
何かの仕事がありましたが、%cnt%変数をトークンに挿入しようとすると、tdelimsが予期せぬものであったことがわかりました。 –
@RogerAway 'for/f'ループは先頭の区切り文字を無視し、連続する区切り文字を1つだけ数えます。/fのために適切なのは次のようなものです: 'for/f" tokens =%cnt%delims = _ "%% A"(%ファイル名% ")do Echo %% A' – LotPings
これは私のコードです。 :/ f "tokens =%cnt%delims = _" %% b in( "%%〜na")の @LotPings –
下線(または下線で区切られた、より正確な要素)をカウントするための異なる方法
self expanding codeを使用することである。
:: Q:\Test\2017\08\28\SO_45917406.cmd
@echo off & setlocal enabledelayedexpansion
set "FileName=example_file_name_20170828_181000.txt"
Set i=1&Set "FileName[!i!]=%FileName:_="&Set /a i+=1&Set "FileName[!i!]=%"
Echo Counted %i% underscore separated elements
Set FileName
サンプル出力:
> Q:\Test\2017\08\28\SO_45917406.cmd
Counted 5 underscore separated elements
FileName=example_file_name_20170828_181000.txt
FileName[1]=example
FileName[2]=file
FileName[3]=name
FileName[4]=20170828
FileName[5]=181000.txt
この溶液からインスピレーションを得ています@ xmcp:
@echo off
Rem The srting to count in the filename is the underscrore "_"
Rem we can of course set another one ;)
set "MyString=_"
setlocal enabledelayedexpansion
@for /f "delims=" %%a in ('Dir /b "%userprofile%\Desktop"') do (
set "filename=%%a"
set /a "cnt=0"
set /a "pos=0"
Call:Counting_String "!filename!" "%Mystring%"
)
pause & exit
::*********************************************************
:Counting_String <filename> <MyString>
set "filename=%~1"
set "string=%~2"
if /I "!filename:~%pos%,1!"=="%Mystring%" set /a cnt+=1
set /a pos+=1
if not "!filename:~%pos%,1!"=="" goto Counting_String
echo !filename!: [!cnt!] "%Mystring%"
exit /b
::*********************************************************
あなたは何を試しましたか? これまでのところ? – CristiFati