Windowsバッチスクリプトでパラメータファイル内の文字列を小文字に変換する方法

このQ&Aのポイント
  • Windowsのバッチスクリプトを使用して、パラメータファイル内の文字列を一律小文字に変換する方法を教えてください。
  • 具体的には、パラメータファイル中の文字列 'user_SYSTEM' を 'user_system' に変換する方法が知りたいです。
  • 現在試しているスクリプトでは、文字列が重複してしまい 'user_abcdef' が出力されません。解決策を教えてください。
回答を見る
  • ベストアンサー

環境:Windows 2008R2

環境:Windows 2008R2 Windowsのバッチスクリプトで以下パラメータファイル内の文字列を 一律小文字に変換しようとしています。 [パラメータファイル中身] user_SYSTEM user_ABCDEF 上記のようなファイルの中身を user_system user_abcdef という文字列にするにはどのようなバッチスクリプトになりますでしょうか。 お手数ですが、どなたかご教示下さいます様お願い致します。 ちなみに以下のような構文を作ってみましたが、 user_system user_system とuser_systemが重複して出力されてしまいuser_abcdefが 出力されませんでした・・・ fro /F "usebackq" %%i in ("tmp_prm") do ( set env=%%i for %%I in (a ~ z[実際には1文字ずつ記載]) do (set env =%%i:%%I=%%I%%) echo %env% >> C:\Temp\b.txt )

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

  • ベストアンサー
  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.1

小文字に変換するところは、以下のページを参考にされたのでしょうか? http://scripting.cocolog-nifty.com/blog/2010/04/post-426e.html お書きになっているバッチを書き直してみました。以下の記述でお試しください。 echo off del C:\Temp\b.txt for /F %%i in ( tmp_prm ) do call :sub %%i exit /b :sub set env=%1 for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do call set env=%%env:%%i=%%i%% echo %env%>>C:\Temp\b.txt goto :EOF

関連するQ&A

  • 環境:Windowsサーバ 2008 R2

    環境:Windowsサーバ 2008 R2 構文:xxxx.bat [パラメータファイル名1] 以下のようなパラメータファイルを用意して、ログ削除バッチを 作成しようと考えています。 [パラメータファイル1] ログ名称1, C:\oracle\diag\tnslsnr\%COMPUTERNAME% ログ名称2, C:\~ ログ名称3, C:\~ 上記、ログ名称1の%COMPUTERNAME%をバッチファイル内の下記のような FOR文のなかで"実際のサーバ名"として処理させたいのですが、可能でしょうか? for %%i ("パラメータファイル1") do ~ ※上記のように%区切りで記載するとそのまま、 C:\oracle\diag\tnslsnr\%COMPUTERNAME% とそのまま処理されパスが存在せずエラーとなってしまいます。 パラメータファイル内に環境変数を記載することが、 可能な場合どのような記載方法となりますでしょうか? 大変お手数ですが、どなたかご教示ください。

  • バッチスクリプトでの引数の囲み文字の取り扱い

    お世話になります。 Windowsのバッチスクリプトで、スクリプトに指定する引数の、スクリプト内部での引数の囲み文字「""」の取り扱われ方についてご教授下さい。 現在使用しているバッチスクリプトは引数を使用していますが、各引数を「":ダブルコーテーション」で囲んで指定しています。 個の引数は他のシステム(AS400)のジョブ起動、ファイル名作成にそのまま使用しております。 バッチスクリプトとパラメータ指定は下記の通りになります。    スクリプト名 "引数1" "引数2" スクリプト内部では"引数1" "引数2"を%1、%2で参照しています。 スクリプト内部のパラメータ展開を調査する為、該当部分の文字列をECHOで出力しました。 ・AS400のジョブ起動のコマンドはパラメータ部分に引数を指定しており  rmtcmd SBMJOB CMD(CALL PGM("引数1"/"引数2") ・引数を使用したファイル名指定では  \jobcon\"引数1""引数2".txt と展開されておりました。 AS400のコマンドは引数の「":ダブルコーテーション」を外した内容で処理されており、 ファイルも「":ダブルコーテーション」が外れたファイル名で作成されました。 IF文等では「":ダブルコーテーション」を付けた形式でなくては比較できません。 バッチスクリプトでの文字列中の「":ダブルコーテーション」の取り扱われかたについてご教授下さい。 宜しくお願いします。

  • バッチでファイルの読み込み

    Windowsバッチでファイルの読み込みをしようと思っているのですが、 下記コマンドの実行で「ファイルが見つかりません」となります。 ※パスにスペースを含むのでusebackqを使用しました。 FOR /F "usebackq tokens=1,2 delims= " %%i in ("c:\temp 1\data.txt") DO echo %%i WindowsServer2003でうまくいかなかったのですが、 Xpですれば問題なくファイルを読み込めました。 何か差があるのでしょうか?

  • 【バッチファイル】for繰り返しがうまくいかない

    バッチファイルの置いてあるフォルダ内(ついでにサブフォルダ内も)の 特定の拡張子(今回は.txt)ファイル全てを対象に (1)ある行ある列n文字目から2文字を読み込む×2 (2)読み込んだ文字をそのファイル名の先頭に追加 というバッチファイルを作りたいです。 具体例 テキストの中身↓ a.txt ○○○○ ○○○○ ○○○○ ○○○○ .... ○○○○ ○○○○ ○○○○ ○○○○ .... ○○○○ ○○○○ ○○○○ ○○○○ .... ○○○○ ○○○○ ○○○○ ○○○○ .... ○○○○ ○○○○ ○○○○ ○○○○ .... ○○○○ ○○xx ○○yy ○○○○ .... ○○○○ ○○○○ ○○○○ ○○○○ .... →ファイル名を「xxyya.txt」にしたい そこで素人ながら下記のようなバッチファイルを作成してみましたが、 フォルダ内にある1つ目のファイルに対してはうまく動くのですが 2つ目以降はリネーム出来ません。 フォルダ内すべての.txtファイルに実行するための 対処法がお分かりになれば、ご教授いただけると幸いです。 「rename.bat」 cd /d %~dp0 rem .txtファイルを列挙 for /f "usebackq tokens=*" %%i in (`dir /s /b *.txt`) do ( set name=%%~xni rem 特定の行列の文字列を抜き出して変数へ格納 for /f "skip=5 tokens=2,3" %%a in (%%i) do ( set front=%%a set back=%%b rem 7行目以降は不要なのでforから離脱 goto break ) :break rem 抜き出した文字列からさらに必要な文字を抜き出して変数へ set hed="%front:~2,2%%back:~2,2%" rem 元のファイル名へ追記 ren %name% %hed%%name% )

  • WindowsバッチのCSV読み込みについて

    WindowsバッチにてCSVファイルのデーターの読み込みを行いたいと考えています。 CSVの中身(test.csv)------------------------------------- "CN=test1,CN=users,DC=testdomain,DC=local","test1","aaa" "CN=test2,CN=users,DC=testdomain,DC=local","test2","bbb" 上記の取り込み方として、以下のバッチを実行しようとした場合、求めている結果になりません。 for /f "delims=, usebackq tokens=1-3 usebackq" %%i in ("test.csv") do echo %%i, %%k ○求める結果 "CN=test1,CN=users,DC=testdomain,DC=local","aaa" "CN=test2,CN=users,DC=testdomain,DC=local","bbb" ○得られた結果 "CN=test1,CN=users,DC=testdomain "CN=test2,CN=users,DC=testdomain ""(ダブルコーテーション)で括ったものを、ひとつのカラムとして受け渡したすことはできないでしょうか。よろしくお願い致します。

  • ある文字列を含むファイル名以外を移動させたい

    ある文字列を含むファイル名以外を移動させたい 現在Windows環境で下記のことをバッチでやりたいです。 イメージとしては、例えばH:\TEST\TEST1というフォルダに aabbbccc.avi aabbbbbb.avi bbbdddee.avi というファイルがあったとすると cccという文字列を含むファイル以外(つまり下2つのファイル)を H:\TESTに移動させたいです。 文字列を含むファイルを移動なら下記のコマンドでできるのですが for /f "usebackq tokens=*" %%A in (`dir /b /s *avi*`) do move "%%A" H:\TEST 含むファイル以外だとわかりません。 誰か教えてください。お願いします。 以上

  • 【VBScript】※渡したい変数のみ抜粋

    【VBScript】※渡したい変数のみ抜粋 WScrip quit(1) 【バッチスクリプト】 for %%i ("パラメータファイル") do ( cscript a.vbs %%i if not %errorlevel%==0 goto err ) 上記VBSが異常終了した際に返す、戻り値1を そのままバッチスクリプトのerrorlevelに返したい のですが、errorlevel==0となってしまいます。 for文を使わず、vbsを実行していた際には、 旨く引き渡せていたのですが、構文の修正が 必要なのでしょうか? どなたかご教示下さい。 宜しくお願いします。

  • 【Windows】バッチスクリプトについて

    FTPサーバからデータを取得するバッチスクリプトを構成しようと思っています。 データ(ファイル)を2回取得し、1回目と2回目のデータ(ファイル)が同じかどうかのチェックし FTPサーバ上のデータ(ファイル)を削除するスクリプトを 以下手順で作成しようと思います。 1.環境変数の設定。 2.startログ出力 3.環境設定ファイル有無チェック 4.環境設定ファイル正当性チェック 5.環境設定ファイルから値の抽出 6.データ受信(1回目)パラメータファイル作成 7. データ受信処理の実行 8.データ受信処理の結果確認 9.作業フォルダ作成 10. データ受信(2回目)パラメータファイル作成 11.7~8と同じ 12.データチェック 13.FTPデータ削除用パラメータファイル作成 14.FTPデータ削除処理 15.FTPデータ削除処理結果の確認 16.rcv.dat作成 17.エラー処理 18.オリジナルデータをバックアップ 19.パラメータファイルをバックアップ 20.ログファイルをバックアップ 21.直近n回分を残して、バックアップファイルを削除 22.後処理(処理データのクリア)※念のため 23.endログ出力 ご参考までに、大まかなスクリプトをご教示いただければと思います。 とても大雑把な質問ではございますが、宜しくお願い致します。

  • バッチえファイルを編集するには??

    こんばんは。 初めて掲載します。 バッチファイルで、複数のあるファイルの中身の特定の文字列を一括編集したと思っているのですが、どのようにコマンドを組めばいいのでしょうか? コマンド、バッチは初めてなのでどのように組めばいいのか是非ともご教授願います。 例として、バッチを実行すると、 C:\temp\の下にtest1.xmlとtest2.xmlがあります。 バッチファイルを実行すると、その2つのファイルの中身のある特定の文字を編集("AAA"という文字列を"BBB"に)して保存する。 というような処理を行いたいです。

  • バッチファイルでファイル名に文字列を挿入したい。

    フォルダにあるファイル全てに対して、ファイル名の先頭に文字列を挿入するバッチファイルを作っています。 対象のファイルは、主にエクセル、ワード、パワーポイント、PDFですが、ファイルの種類に関係なく、全てのファイルに対して、ファイル名の先頭に文字列を挿入したいです。 @echo off for %%i in (*) do ren "%%i" "【文字列】%%i" pause として文字列の挿入自体はできました。 しかし、このファイルを2回実行すると、ファイル名の先頭に【文字列】【文字列】と重複して挿入されてしまうので、すでに挿入済みのファイルに対しては実行しないようにしたいのですが、うまくいきません。 また、サブフォルダ内にあるファイルに対しても同様の処理を適用したいです。 どのように記述すればよいでしょうか。 リネームソフトを使えればよいのですが、フリーソフト等はインストールできない環境ですので、できればバッチファイルを記述して対応したいのです。 OSはウインドウズ7です。