• 締切済み

DOSコマンドの環境変数取得について

DOSコマンドで/区切りの文字列の取得方法が分からなく教えて頂きたいです。 (例) DOSコマンドでdddだけ取得して表示したいです。 set test=aaa/bbb/ccc/ddd UNIXshellだと test=aaa/bbb/ccc/ddd file=`basename $1` echo $file ddd setコマンドの置換""ではなく、/区切り位置での取得方法で 何か方法がありますでしょうか? ご説明内容が分かりにくくて申し訳ございませんが、 よろしくお願い致します。

みんなの回答

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.1

set TEST=C:\oya\ko\mago.txt for /f %%A in ("%TEST%") do set FILE=%%~nxA echo %FILE% で、FILE は mago.txt になります。ドライブ名、ディレクトリ名、ファイル名(拡張子除く)、拡張子をそれぞれ取り出せます。 set TEST=/oya/ko/mago.txt でも同じです。 詳しくは for /? を参照

kana2570
質問者

補足

実現できました。 ご指導頂き、ありがとうございました。

関連するQ&A

  • Batにおける変数について

    はじめまして。 どなたかご教授願います。 @echo off set AAA=( +8000896 - +8000551 ) = 345 set BBB=28 set CCC1=%AAA:~28% #set CCC2=%AAA:~"%BBB%"% #行の部分の変数定義が行えません。 "や`、\を組み合わせてみましたが CCC1のような 結果にはならず悩んでおります。 お手数ですが、ご回答の程お願い致します。

  • cshで変数名の入れ子ができない

    こんなことをしたいと考えています。 --------------------- set aaa="bbb" set bbb="ccc" echo $aaa echo $bbb echo $($aaa) --------------------- 期待する実行結果としては、 --------------------- bbb ccc ccc --------------------- という感じです。 エラーになってしまうのですが、何かいい逃げ方はありませんか? cshでなくてshでも構いません。 よろしくお願いします。

  • DOSコマンドでVBSで取得した値をセットしたい

    DOSコマンドで VBSで取得した値をセットしたい サーバ上のあるフォルダにファイルが蓄積されています。 2011_07_01.csv 2011_07_02.csv 2011_07_05.csv 2011_08_05.csv 今月(8月)になった時点で、先月分(07月)で且つ_01.csv と_05.csvファイル を削除するコマンドを作ろうとしています。 先月を取得する部分をVBSにし、その値をセットしようとしましたが、セット方法が分かりません。 echo WScript.Echo Right("0" & Month(DateAdd("d",-15,Date)), 2)> C:\tmptest.vbs CALL C:\tmptest.vbs とするとメッセージボックスで'07'と出力されます。 イメージですが、この'07'を変数にセットして、 (SET AAA = C:\tmptest.vbsの出力結果 のような) フォルダ内で ????_%AAA%_01.csv ,????_%AAA%_05.csv にマッチすれば削除するとしたいのですが、 (FOR /R %%A IN (????_%AAA%_01.csv,????_%AAA%_05.csv) DO DEL %%A というかんじで) VBSで取得した値をセットする方法を教えてください。

  • dosでサイズを比較して異なるファイルだけコピー

    dosで全フォルダ内のファイルサイズを比較して異なるファイルだけコピーしたい 次のようなファイル構成で AAAフィルダ    BBBフォルダ  cccフォルダ    cccフォルダ   abc.txt      abc.txt   def.jpg      def.jpg  dddフォルダ    dddフォルダ   ghi.txt      ghi.txt   jkl.jpg      jkl.jpg AAA\ccc\abc.txtとBBB\ccc\abc.txt AAA\ccc\def.jpgとBBB\ccc\def.jpg AAA\ddd\ghi.txtとBBB\ddd\ghi.txt AAA\ddd\jkl.jpgとBBB\ddd\jkl.jpg 拡張子は問わずそれぞれに対するファイルのファイルサイズを比較して 大きくても小さくても異なるファイルだけbbbフォルダ内に上書きコピー したくご教授をお願いします

  • VBAの正規表現

    VBAで正規表現による置換をしたいです。 以下のような行が複数あります。 1 aaa bbb ccc ddd 2 aaa bbb ccc ddd 3 aaa bbb ccce ddd 4 aaa bbb eccc ddd ccc の部分のみ置換したいです。 dim hensuu as string dim replace as string replace = eee hensuu = ccc (省略) strPattern = "(\s*)" & hensuu & "(\s+)" rep = RegExpObj.Replace(buf, "\1" & replace & "\2") 行数1,2 のみを置換したのですが、4も置換されてしまいます。 (\s*) の "*" が良くないのは理解していますが、"+" にしてもうまくいきません。 どなたかどのようにしたら1,2のみ置換できるようになるかをご教授お願いできませんでしょうか よろしくお願いいたします。

  • DOS コマンド 複数の変数について

    DOS コマンドで複数の変数を使ってデータを取り出したいのですが できないでしょうか。ファイル名をいったん取り出したあとに さらに、ファイル名の後ろから4文字を取り出したいと思っています。 ご教授いただけると非常に助かります。 例文は以下となります。 もう少し複雑なコマンドを作成していますが、 同様の箇所となります。最後のy に7890 がセットされた状態としたいです。 Echo on set x=1234567890 set y=%x:~-4% echo y

  • DOSプロンプトのテキストファイルから取得したフィールドがデータ無しの場合の認識方法

    CSVファイルから各フィールドを取得し、なにも入っていない場合は固定値を入れると言う処理を、DOSのコマンドプロンプトによるバッチで行ってほしいと言うユーザ要望に答えなくてはなりません。 【入力ファイル】 <<AAA.csv>> aaa,,bbb,,ccc,ddd iii,jjj,kkk,lll,mmm,nnn eee,,fff,,ggg,hhh このAAA.csvを入力情報にして、 カンマ区切りの何も入っていないフィールドを認識し、 上記ファイルで言うと、 各行の2項目に何も入っていない場合は222を、 各行の4項目に何も入っていない場合333を入れる、 と言う処理を作る必要があります。 上記に説明した処理での出力結果は以下の様になります。 【出力ファイル】 <<BBB.csv>> aaa,222,bbb,333,ccc,ddd iii,jjj,kkk,lll,mmm,nnn eee,222,fff,333,ggg,hhh forやsetを駆使してフィールドの取得や変換は出来たのですが、 取得したフィールドに何も入っていなかった場合に固定値を入れる処理で行き詰っています。 何か良い方法があれば教えてください。 ちなみに入力や出力ファイルはタブ区切りのTSVファイル形式の場合もあります。 又環境は、銀行のサーバで実装するのでフリーソフトはもちろんparlやWSH等のインストールも許されていない為、DOSプロンプトコマンドによるバッチ処理のみで行う必要があります。 宜しくお願いします。

  • ファイルの更新日時を取得する手法を教えて下さい。

    Excel2003のマクロにて、ファイルの更新日時を取得しようとして、次の構文を作りましたが、×印のところで実行時エラー438が発生します。 CreateObjectの作り方が間違っているのではないかと思うのですが、具体的な方法が判らず、泣いています。 何方か、ファイルの更新日時を取得する手法を教えて下さい。 宜しくお願いします。 Sub ファイルの更新日時取得() Dim A, B Dim AA Dim SSS() Dim AAA, BBB, CCC, DDD Set AAA = CreateObject("Scripting.FileSystemObject") Set BBB = AAA.GetFolder("対象フォルダ名") Set CCC = BBB.Files A = CCC.Count If A > 0 Then ReDim SSS(A, 5) B = 0 For Each DDD In CCC B = B + 1 SSS(B, 1) = B SSS(B, 2) = DDD.Path SSS(B, 3) = DDD.Name SSS(B, 4) = DDD.Size ×SSS(B, 5) = DDD.LastRefreshed Next End If End Sub

  • 文章中のファイルリンクを置換したい

    文章をjavascriptで読み込み、 以下のような文章のなかに埋まっているファイルリンクの文字を 置換してあげたいのですが、正規表現で表現しきれないでしょうか? ■例: ---以下文章---- あああああ いいいいい \\AAA\BBB\CCC ううううううう \\CCC\DDD\EEE えええええ --------------- とあった時に、下記のようにしたいと考えています。 --------------- あああああ いいいいい <a href="file:////AAA/BBB/CCC">\\AAA\BBB\CCC</a> ううううううう <a href="file:////DDD/EEE/FFF">\\DDD\EEE\FFF</a> えええええ --------------- 今考えている限りだとは\\までを含む文章まではマッチさせて、 リプレースできるのですが、 文章の中の\を/に置き換える方法が思いつきません。 ■私の頭の限界の正規表現だけだと下記までしか思いつきませんでした。 str.replace ( /(\\\\[^ \s\:\*\?\"\<\>\|\#\{\}\%\&\~]+)/gi , <a href=\"file:\/\/$&\">$&<\/a>)> どなたか思いつくことありましたらお知恵をかしていただけないでしょうか。

  • 正規表現で一つ目の区切り文字で区切りたいのですが・・・

    aaa/bbb/ccc/ddd aaa/bbb/ccc/ddd/eee aaa/ccc/ddd $a=~/(.*)\/(.*)/; $1はそれぞれ aaa/bbb/ccc aaa/bbb/ccc/ddd aaa/ccc と成ってしまいます。 このように 「最後の/」で分けられてしまいます。 一つ目の/で分けるにはどうしたらよいでしょうか。

    • ベストアンサー
    • Perl

専門家に質問してみよう