• ベストアンサー

ファイル名を複数の変数に分割するbatファイル

動画エンコードを効率化するbatファイルを作成しようとしています。 チャンネル名 日付 番組名.avs という形式のファイル名があります。 このファイル名をもつファイルを変数に格納するとき、 set CHANNEL=チャンネル名 set DATE=日付 set TITLE=番組名 set FILE_TYPE=%~x1 というように分けて格納したいのですが、どのような記述をすれば良いのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.2

間に空白があると言うことですか?そうだとすると、 for /f "tokens=1-4 delims=. " %%A in ("チャンネル名 日付 番組名.avs") do ( set CHANNEL=%%A set DATE=%%B set TITLE=%%C set FILE_TYPE=%%D ) そうじゃなくて、「何文字目から何文字」を取り出すのであれば、 set FILE=チャンネル名 日付 番組名.avs set CHANNEL=%FILE:~0,2% とか。

beat_it777
質問者

お礼

ありがとうございます。解決しました。 前者の通り、半角スペースでファイル名を区切るという意味です。

その他の回答 (1)

noname#158634
noname#158634
回答No.1

setのヘルプを見てください。

関連するQ&A

  • DOSのバッチで、変数中のファイル名を取り出すには

    DOSのバッチの初心者です。 $FILEという変数に、 C:\Documents and Settings\Administrator\My Documents\okwave.txt のようにファイル名がフルパスで入ってくるとします。このファイル名だけ(okwave.txt)を別の変数に入れたいのですが、うまくいきません。 set f=%$FILE% set g=%%~nf echo %g% 上のように書いてみたのですが、変数gは%~nfという値が入ってしまいます。どう直せばよいでしょうか。

  • Batファイルについて

    フォルダ内にある複数ファイルのファイル名の変更はできるのですが、複数階層のフォルダにまたがって格納されているエクセルや他ファイル名をBatファイルで一括変更する方法がわかりません。 また、ファイル名の中に全角スペースが含まれているファイル名を全角スペースのみ取り除く方法もBatファイルでやりたいのですが、これも半角スペースはできるのですが、全角スペースの場合がわからなく困っています。 どなたか教えて頂けないでしょうか。 宜しくお願い致します。

  • 絶対パス名からファイル名を取り出して、変数に格納するバッチ

    DOSコマンドバッチで定義した変数"fullpath"に絶対フルパス名が格納されているとします。 この変数からファイル名だけを抽出して別の変数"filenae"に格納したいのですが方法がわかりません。 1. set fullpath = "C:\test\test.c" 2. ----ここの部分をどのように処理すれば?------ 3. set filename = fullpathから抽出したファイル名 私がやってみた方法として、for文とdir /bを組み合わせてみたのですが for %a in ( dir /b c:\test\test.c ) do set filename =%a 本来dir /bを実行するとファイル名のみが表示されるのに、For文をかますと絶対フルパスでfilenameに値が格納されてしまいます。 dir /b c:\test\test.cの結果を直接filename変数に格納できれば解決するのですが、コマンド結果を変数に格納するにはFor文を使わないとだめなんですよね? なにかよい方法はないでしょうか?

  • batファイル コマンド

    batファイルでSetを使用して変数を代入してそれをechoでテキストファイルに記載させようとしているのですが、なぜか記載できていません。 何故でしょうか?回答よろしくお願いします。 (例) set TEST=SUCCESS echo %TEST% %COMPUTERNAME%>> "%~dp0%\TEST.txt" 作成されたTEST.txtを開くと 「KAISYA_PC」【※PC名】と入力されており変数TESTの値「SUCCESS」が 入っていません。

  • バッチファイル(batファイル)

    あることを自動化するために、あるサイトのバッチファイルをコピー&ペーストして使おうと思っています。 (自由に使用していいと表記してあります) しかし、使用されているプログラムがいくつか入手できなかったり、バッチファイルをいくつか繋げたらら上手くいかなかったりと、 色々と問題があり、自分で改変をしています。 初めてバッチファイルの中身を触ったような初心者なので、色々と試行錯誤しているのですが、行き詰ってしまいました。 上記のように初心者なので、言葉がおかしい所があったりするかもしれませんが、 回答よろしくお願いします。 本題です。 ファイルのドロップで処理を始めたいのですが、どうやらファイル名に半角の#が含まれていると途中でエラーが出るので、 処理の一番最初でファイル名の半角#を全角#に置き換えようとしたのですが上手くいきませんでした。(ファイル名の変更) なので新たなバッチファイル、"ドロップ用.bat"を作り、そこでファイルの置き換えを行ってから、callコマンドで 本命のバッチファイルaaa.batを呼び出そうとしました。 それでもうまくいかないため、質問させていただきました。 バッチファイルは一つのフォルダーにまとめていますが、ドロップするファイルは別のフォルダーにあります。 なお、ドロップするファイルのフルパスには、空白が含まれる可能性があります。 ドロップ用.bat--------------------------- @echo off setlocal set abc=%~n1 set def=%abc:#=#% ren "%~nx1" %def%%~x1 set ghi="%~dp1%def%%~x1" set jkl=%~dp0 call "%jkl%aaa.bat" "%ghi%" rem pause endlocal exit /b ----------------------------------------- ややこしくてまわりくどいバッチファイルですみません。 Windows7を使っています。 C:\windows\system32\cmd.exeと上には書いてあります。 よろしくお願いします。

  • 古いフォルダーを削除するbatファイル

    batファイルでディレクトリのバックアップを行いました。 このバックアップを行うときに古いディレクトリを 削除するbatファイルを考えているのですがうまくいきません。 どなたかお知恵をお貸しください。 下記のように名前が付けられたディレクトリがあります。 090601 090602 090603 090604 このディレクトリの日付が古いディレクトリを削除するようにしたい。 (上記の場合090601が該当) 変数にディレクトリの090601を入れられるようなbatを作ればいいのでしょうが。 それが浮かびません。 どのようにしたらよろしいでしょうか??

  • batファイルかフリーソフトでファイル名の特定文字まで削除できますか?

    batファイルかフリーソフトでファイル名の特定文字まで削除できますか? batファイルにて元のファイル名の後ろに日付と時刻を入れることはできたのですが、 例: abc.txt → abc_1006160810.txt これを更新するために、_までを削除したいのですが、どのようにbatファイルを作ればいいのか分かりません。 どなたか、知恵をいただけませんか。 したいことは、 abc_1006160810.txt の _1006160810 を削除するだけのbatファイルです。 batファイルではなく、フリーソフトにコマンドラインで一発変換でも構いません。 よろしくお願いいたします。

  • Batファイルについて

    複数階層のフォルダにまたがって格納されているエクセルファイルをBatファイルでコピー、又は、移動させたいのです。コピー、移動させたいファイルのファイル名の頭(顧客IDになっている)を拾ってリストにしてあります。移動させたいエクセルファイルが複数のフォルダに入っているので、最上階層のフォルダでbatファイルを実行できればと思っています。 現在は複数あるフォルダの中に下記のBatファイルと対象リスト.txtをを入れて1フォルダずつ実行していますが、数十個あるフォルダなので作業が大変です。最上階層で出来るようにしたいのです。 FOR /F %%i in (list.txt) do copy %%i "移動先のパス"

  • batファイルでのファイル名取得について

    おそれいります。ご教示くださいませ。 ファイル拡張子xxxをxxx.batに関連付けしました。 test.xxxをダブルクリックするとxxx.batが実行されるシカケです。 実行されたxxx.batでtest.xxxというファイル名を取得したいのですが方法がわかりません。 %0にはxxx.batがセットされてしまうからです。

  • フォルダー内の複数ファイル名を一括で変名するbat

    フォルダー内の複数ファイル名を一括で変名するbatを教えてください。 batは、デスクトップに配置して 処理するフォルダーをD&Dして処理させる形式をとしたいです。 以下のような形式です。  No1 aaaa bbbb [com : *********].zip を  No1 aaaa bbbb.zip に変名する。   (*******は任意の文字列) 例えば、 No1 aaaa bbbb [com : taken2110221100014].zip であれば No1 aaaa bbbb.zip に変名する。 以下が参考になりそうなので https://oshiete.goo.ne.jp/qa/9263608.html 記事中の助言を元に以下のようにコードを修正してみましたが うまく処理できませんでした。 bat(test,bat,test2.bat)のどこを再修正すれば希望の処理ができますか ? 希望は、下記ですが 「batは、デスクトップに配置して 処理するフォルダーをD&Dして処理させる形式をとしたいです。」 batを修正してもこのbatでは、D&Dで処理することは可能で無い場合は アドバイス又は他の参考なりそうなURLを紹介ください。 '------------------------------------------ rem test.bat echo off for /F "delims=" %%f in ('dir /*.mp4') do call :sub "%%f" exit /*.mp4 :sub set fname=%~1 set n=0 :loop call set c=%%fname:~%n%,1%% set /a n=n+1 if "%c%"=="" goto :EOF if "%c%"=="[com" goto break goto loop :break set /a n=n-1 set ext=%~x1 call set newname=%%fname:~0,%n%%% call set newname=%newname%%ext% if "%newname%"=="" goto :EOF if "%newname:~0,1%"=="." goto :EOF ren "%fname%" "%newname%" goto :EOF '-------------------------------------- rem bat2.bat for /F "tokens=1* delims=[com" %%F in ('dir /b *.mp4') do echo move %%F[com%%G %%F.mp4 '--------------------------------------

専門家に質問してみよう