[前の記事]« この掲示板で使えるHTMLタグ
[次の記事]ファイル名を、現在日時にする方法 »

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

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

ファイル名の一部を取得する方法

703.
ファイル名の一部を取得する方法
2004年08月03日(火) 14時49分
まつ
いつもお世話になっております。

例えば
 TBL01_01_200406.txt
 TBL02_02_200407.txt
 TBL0X_0Y_ZZZZZZ.txt
という規則のファイルから、YとZZZZをバッチ内の変数に
取得する事は出来るのでしょうか?

環境は、WinNT4.0Sv SP6aです。

以上、宜しくお願い致します。
704.
補足:ファイル名の一部を取得する方法
2004年08月03日(火) 15時44分
まつ
hogeというフォルダに
TBL01_01_200406.txt TBL02_01_200406.txt・・TBL08_01_200406.txt
TBL01_02_200407.txt TBL02_02_200407.txt・・TBL08_02_200407.txt
 ・
TBL01_09_200405.txt TBL02_09_200405.txt・・TBL08_09_200405.txt
という72のファイルがあります。

honyarara.bat TBL01と引数付きでバッチを起動したら
TBL01_01_200406.txt内の各行の最後尾に「_01 200406」追加
TBL01_02_200407.txt内の各行の最後尾に「_02 200407」追加
・・・
TBL01_09_200405.txt内の各行の最後尾に「_09 200405」追加
TBL01*を結合してTBL01.datに保存するという処理を行いたいのです。

昨夜の質問の続きでもあります。
以上、宜しくお願い致します。
706.
Re:ファイル名の一部を取得する方法
2004年08月03日(火) 21時01分
YanaKen
まつ さん こんにちは。

>例えば
> TBL01_01_200406.txt
> TBL02_02_200407.txt
> TBL0X_0Y_ZZZZZZ.txt
>という規則のファイルから、YとZZZZをバッチ内の変数に
>取得する事は出来るのでしょうか?

>環境は、WinNT4.0Sv SP6aです。

「(ファイル名の)文字列から、位置と長さを固定的に指定して一部を取り出す方法」ということですね。環境変数に取り込んだあとの文字列の加工・切り出し機能はNT系になら存在しますので、質問内容からは、この機能で解決できそうに思われます。

≪環境変数から位置を指定して文字列を取り出すサンプル≫
@echo off
set TEST=TBL01_01_200406.txt
echo 環境変数 TEST に文字列 "%TEST%" をセットしました。
echo 環境変数TESTのオフセット7から始まる1文字を取り出します。
echo %TEST:~7,1%
echo 環境変数TESTのオフセット9から始まる6文字を取り出します。
echo %TEST:~9,6%

 詳細は set /?で情報を得てください。
※この機能がNT4.0でもサポートされていることはとりあえず確認済みです(NT4で動かしてはいないですが)。

YanaKen
708.
Re2:ファイル名の一部を取得する方法
2004年08月03日(火) 22時55分
まつ
YanaKenさんこんばんは。レス有り難う御座います。

初心者なのでforの使い方がイマイチ分かっていませんが、
過去ログを検索して何とか下記までは辿り着けました。。
#もっとスマートな方法がありましたら教えて下さい。

for /f "delims=" %%A in ('dir /b %1_*.txt') do call :hhh %%A
exit

:hhh
set hoge=%1
set kekka=%hoge:~7,3%
echo %kekka%
:eof

後は%kekka%を使って%1_*.txt内を編集するだけなのですが、、
これが難しそうですね。。

どなたかawkのヒントを御教示下さい。m(_ _)m
私も色々探ってみますが・・。
よく分かりませんが、先頭に載っていた下記を使おうかと
考えてます。(^^;
http://www.vector.co.jp/soft/dos/util/se000208.html
709.
Re3:ファイル名の一部を取得する方法
2004年08月04日(水) 00時43分
ラシャン
タブ区切りではなく、CSV形式でも書き出せるということなので
スマートでは無いですが例えばこんな感じでどうでしょうか・・・

>TBL01_01_200406.txt内の各行の最後尾に「_01 200406」追加
カンマ区切りにした場合に
「aaa,bbb,ccc,ddd,_01,200406」ではなく
「aaa,bbb,ccc,ddd,_01 200406」としたい時は
%kekka1%,%kekka2%の間のカンマを半角スペースに書き換えて下さい。

参考までに・・・(ならないかもしれませんが^^;)

honyarara.bat
-----------------------------------------------------------
@echo off
setlocal
set fname=%1
for /f %%a in ('dir /b %1_*.txt') do (
set hoge=%%a
call :hhh
)
exit

:hhh
set kekka1=%hoge:~5,3%
set kekka2=%hoge:~9,6%
for /f "tokens=1-4 delims=," %%b in ('type %hoge%') do (
echo %%b,%%c,%%d,%%e,%kekka1%,%kekka2%>>%fname%.dat
)
-----------------------------------------------------------


TBL01_01_200406.txt、TBL01_03_200408.txt中身
-----------------------------------------------------------
aaa,bbb,ccc,ddd, 
eee,fff,ggg,hhh, 
iii,jjj,kkk,lll, 
-----------------------------------------------------------


TBL01_02_200407.txt中身(空です)
-----------------------------------------------------------
-----------------------------------------------------------


<実行結果>
TBL01.datの中身
-----------------------------------------------------------
aaa,bbb,ccc,ddd,_01,200406
eee,fff,ggg,hhh,_01,200406
iii,jjj,kkk,lll,_01,200406
aaa,bbb,ccc,ddd,_03,200408
eee,fff,ggg,hhh,_03,200408
iii,jjj,kkk,lll,_03,200408
-----------------------------------------------------------
 
 


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

 

カテゴリー一覧

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


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

資料書籍

About

2004年08月03日 08:53に投稿されたエントリーのページです。

ひとつ前の投稿は「この掲示板で使えるHTMLタグ」です。

次の投稿は「ファイル名を、現在日時にする方法」です。

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

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