[前の記事]« 新規発言時に「●DOS/Windowsのバージョン」入力項目を表示するよう調整しました
[次の記事]時刻のあとにAM/PMをつけたい »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「文字列の操作」索引へ

ファイル名から特定記号の間のテキストを取得する方法

803.
ファイル名から特定記号の間のテキストを取得する方法
2004年09月16日(木) 21時52分
ココア
●DOS/Windowsのバージョン↓
Window2000サーバを使っています。

こんばんは。
以下のようなファイル名からテキストを取得しようと
します。掲示板に似たような内容がありましたが応用が出来ません。

ファイル名: RTOE_AAAA_BBBBB_yyyymmddhh

'AAAA'と'BBBBB'の長さは可変ですが、必ず値はあります。

ファイル名から'AAAA'と'BBBBB'を取りたいですが、
どのようにすればいいのか、ご教授願いします。宜しくお願いします。
804.
Re:ファイル名から特定記号の間のテキストを取得する方法
2004年09月17日(金) 00時43分
oo
>●DOS/Windowsのバージョン↓
>Window2000サーバを使っています。

>こんばんは。
>以下のようなファイル名からテキストを取得しようと
>します。掲示板に似たような内容がありましたが応用が出来ません。

>ファイル名: RTOE_AAAA_BBBBB_yyyymmddhh

>'AAAA'と'BBBBB'の長さは可変ですが、必ず値はあります。

>ファイル名から'AAAA'と'BBBBB'を取りたいですが、
>どのようにすればいいのか、ご教授願いします。宜しくお願いします。

_ を3つ含む文字列から、1番目と2番目の _ の間の文字列と、2番目と3番目の _ の文字列を取り出したいということでしょうか。
1文字ずつ調べていくしかないですね。

@echo off
setlocal
set NAME=RTOE_ABCDE_XYZ_2004091721
call :sub %NAME% -1   I1
call :sub %NAME% %I1% I2
call :sub %NAME% %I2% I3
set /a N=I1+1
set /a L=I2-I1-1
call set A=%%NAME:~%N%,%L%%%
set /a N=I2+1
set /a L=I3-I2-1
call set B=%%NAME:~%N%,%L%%%
echo [%A%],[%B%]
goto :eof

:sub
rem %1の%2番目の次の文字から _ を探してその位置を%3にセット
set STR=%1
set N=%2
:loop
set /a N+=1
call set X=%%STR:~%N%,1%%
if %X%==_ set %3=%N%&goto :eof
goto loop

文字列には特殊文字が含まれないと仮定。
806.
Re2:ファイル名から特定記号の間のテキストを取得する方法
2004年09月17日(金) 11時27分
ココア
ooさん

こんにちは。
>>_ を3つ含む文字列から、1番目と2番目の _ の間の文字列と、2番>>目と3番目の _ の文字列を取り出したいということでしょうか
はい、そのとおりでした。

ooさんが教えてくれたとおりに使用してみたら
うまくいきました。
三日悩んだあげくご相談したのですが、大変助かりました。

本当にどうもありがとうございました。

>>●DOS/Windowsのバージョン↓
>>Window2000サーバを使っています。
>>
>>こんばんは。
>>以下のようなファイル名からテキストを取得しようと
>>します。掲示板に似たような内容がありましたが応用が出来ません。
>>
>>ファイル名: RTOE_AAAA_BBBBB_yyyymmddhh
>>
>>'AAAA'と'BBBBB'の長さは可変ですが、必ず値はあります。
>>
>>ファイル名から'AAAA'と'BBBBB'を取りたいですが、
>>どのようにすればいいのか、ご教授願いします。宜しくお願いします。

>_ を3つ含む文字列から、1番目と2番目の _ の間の文字列と、2番目と3番目の _ の文字列を取り出したいということでしょうか。
>1文字ずつ調べていくしかないですね。

>@echo off
>setlocal
>set NAME=RTOE_ABCDE_XYZ_2004091721
>call :sub %NAME% -1   I1
>call :sub %NAME% %I1% I2
>call :sub %NAME% %I2% I3
>set /a N=I1+1
>set /a L=I2-I1-1
>call set A=%%NAME:~%N%,%L%%%
>set /a N=I2+1
>set /a L=I3-I2-1
>call set B=%%NAME:~%N%,%L%%%
>echo [%A%],[%B%]
>goto :eof

>:sub
>rem %1の%2番目の次の文字から _ を探してその位置を%3にセット
>set STR=%1
>set N=%2
>:loop
>set /a N+=1
>call set X=%%STR:~%N%,1%%
>if %X%==_ set %3=%N%&goto :eof
>goto loop

>文字列には特殊文字が含まれないと仮定。
809.
Re3:ファイル名から特定記号の間のテキストを取得する方法
2004年09月17日(金) 14時25分
じゃく
こんにちは。
もう解決してますが....。

>ooさんが教えてくれたとおりに使用してみたら
>うまくいきました。
>三日悩んだあげくご相談したのですが、大変助かりました。

>>>ファイル名: RTOE_AAAA_BBBBB_yyyymmddhh
>>>
>>>'AAAA'と'BBBBB'の長さは可変ですが、必ず値はあります。
>>>
>>>ファイル名から'AAAA'と'BBBBB'を取りたいですが、
>>>どのようにすればいいのか、ご教授願いします。宜しくお願いします。
>>
>>_ を3つ含む文字列から、1番目と2番目の _ の間の文字列と、2番目と3番目の _ の文字列を取り出したいということでしょうか。
>>1文字ずつ調べていくしかないですね。

1文字ずつ調べなくてもできそうですよ。

echo off
set arg=RTOE_ABCDE_XYZ_2004091721
set arg=%arg:_= %
call :sub %arg%
echo %aaa% - %bbb%
exit /b

:sub
set aaa=%2
set bbb=%3
goto :EOF

>文字列には特殊文字が含まれないと仮定。
同じくです。
814.
Re4:ファイル名から特定記号の間のテキストを取得する方法
2004年09月17日(金) 22時01分
oo
ooです。

>こんにちは。
>もう解決してますが....。

>>>1文字ずつ調べていくしかないですね。

>1文字ずつ調べなくてもできそうですよ。

その通り。

set NAME=RTOE_ABCDE_XYZ_2004091721
for /f "tokens=2,3 delims=_" %%A in ("%NAME%") do set A=%%A&set B=%%B
echo [%A%] [%B%]

でいいのでした。わたし最近ちょっとボケてますね。
 
 


カテゴリー「文字列の操作」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2004年09月16日 09:12に投稿されたエントリーのページです。

ひとつ前の投稿は「新規発言時に「●DOS/Windowsのバージョン」入力項目を表示するよう調整しました」です。

次の投稿は「時刻のあとにAM/PMをつけたい」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート