
バッチファイルのあるフォルダー内の
x64_AppleApplicationSupport_icudt*.dll
(*には49や55などの数値が入る)
(このファイルはフォルダー内に一つしか存在しない)
というファイルを検索して
得られたファイル名の
icudt*.dll
という部分だけを変数に格納したいと考えています。
ネット上で検索して
@echo off
cd /d %~dp0
SET path1="x64_AppleApplicationSupport_"
setlocal enabledelayedexpansion
for /F %%A in ('dir %path1%"icudt*.dll" /B') do (
set path3="%%A"
)
endlocal
call set path4=%path3:x64_AppleApplicationSupport_=%
echo %path4%
というコードでいけると思うのですが
x64_AppleApplicationSupport_=
という文字列が代入されてしまいます。
call set path4=%path1:x64_AppleApplicationSupport_=Apple%
echo %path4%
というコードだとうまくいくので、
どうもdirでファイル名をうまくセットできていないように思います。
これはどうすれば良いでしょうか?
No.4ベストアンサー
- 回答日時:
No.2です。
こちらの方が汎用性がありました。setlocal enabledelayedexpansion
set PATH1=x64_AppleApplicationSupport_
for /F "usebackq" %%A in (`dir %PATH1%icudt*.dll /B`) do (
set PATH3=%%A
)
echo %PATH3%
set PATH4=!PATH3:%PATH1%=!
echo %PATH4%
endlocal
No.5
- 回答日時:
他の回答者さんの回答を見ていて思ったのでですが、
質問者さんのコード通りにいくと、
path3やら4には1つのファイルの名前しか入らないことは分かってらっしゃいますか?
それともファイルが1つしかない前提なのでしょうか?
少なくとも質問本文から推測するに複数ファイルがあるようですが……。
No.3
- 回答日時:
No.2です。
> x64_AppleApplicationSupport_という文字列を置換して削除する方法も教えていただけないでしょうか?
置換の方法自体は、質問文の中でご提示の方法で良いと思います。
forコマンドに一部修正することでできます。
※dirコマンドの両側は、シングルクォートではなくて、バッククォート(Shift+@)になります。
set PATH1=x64_AppleApplicationSupport_
for /F "usebackq" %%A in (`dir %PATH1%icudt*.dll /B`) do (
set PATH3=%%A
)
echo %PATH3%
set PATH4=%PATH3:x64_AppleApplicationSupport_=%
echo %PATH4%
No.2
- 回答日時:
こんな感じでどうでしょう。
set PATH1=x64_AppleApplicationSupport_
rem dirコマンドで取得した文字のうち、
rem '_'で分割した3つめの文字列を%%iとする。
for /F "usebackq tokens=3 delims=_" %%A in (`dir %PATH1%icudt*.dll /B`) do (
set PATH3=%%A
)
echo %PATH3%
No.1
- 回答日時:
たぶんこうかなと思いますけどど
――――――――――――――ここから―――――――――――――――
@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
SET jogai=x64_AppleApplicationSupport_
rem for /F %%A in ('dir "%jogai%icudt*.dll" /B') do (
for /f "usebackq delims=" %%A in (`dir /b "%jogai%icudt*.dll" /a-d`) do (
set fileName=%%A
echo !fileName!
set newFileName=!fileName:%jogai%=!
echo !newFileName!
set newPath=!newpath! "!newFileName!"
echo -----
)
rem 先頭一文字(半角スペース)削除
set newpath=%newpath:~1%
echo newPath
echo !newpath!
pause
exit
――――――――――――――ここまで―――――――――――――――
以上
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
絶対パス名からファイル名を取り出して、変数に格納するバッチ
その他(プログラミング・Web制作)
-
-
4
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
5
コマンドプロンプトによるフォルダ内のファイル存在有無
UNIX・Linux
-
6
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
7
バッチファイルでテキストファイルの1行目だけ変更
その他(プログラミング・Web制作)
-
8
バッチで特定文字が含まれる先頭行を取得したい
Windows Me・NT・2000
-
9
Dosブロンプトでtabを出力したい
その他(プログラミング・Web制作)
-
10
コマンドプロンプトでファイル一覧を変数に入れる方法
その他(プログラミング・Web制作)
-
11
テキストファイルから最終行の抽出
Windows Me・NT・2000
-
12
【バッチファイル】ホスト名をファイル名につけたい【変更】
その他(コンピューター・テクノロジー)
-
13
フォルダ内の更新日時が一番新しいファイルを開きたい
その他(プログラミング・Web制作)
-
14
バッチファイル テキストファイル内の最後の\\以下を削除したい
その他(プログラミング・Web制作)
-
15
コマンドの結果を変数に入れたい
Windows 10
-
16
バッチ処理 特定の文字以降をリネーム
Ruby
-
17
echo abc" >> test.txt で、先頭に追加するには?"
その他(OS)
-
18
バッチファイルのコピーで
その他(プログラミング・Web制作)
-
19
Windowsで指定「以外」のファイルを移動したい
IT・エンジニアリング
-
20
バッチファイル 別ファイルにリストしてあるファイルをコピーしたい
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチでテキストファイルから...
-
コマンドプロンプト標準出力と...
-
バッチファイルで常に最新の現...
-
バッチファイルで昨日の日付を取得
-
コマンドプロンプト画面の閉じ...
-
echoとsystem関数について
-
DOSのバッチで、変数中のファイ...
-
コマンドプロンプトで2ヶ月前3...
-
コマンドプロンプト(バッチファ...
-
【VC2008】実行ファイル(exe)に...
-
C#でメジャーなバッチフレーム...
-
IPアドレスの第3オクテットだ...
-
PowerShellからPowerShellを呼...
-
batの変数を直接vbsのプログラ...
-
呼び出し元バッチを知るには?
-
DOSのバッチで、テキストファイ...
-
ファイル名変更
-
コマンドプロンプト(バッチ)...
-
Excelで住所録を地域ごとに振り...
-
バッチファイルでDirで取得した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチでテキストファイルから...
-
バッチファイルで昨日の日付を取得
-
バッチファイルでDirで取得した...
-
コマンドプロンプトで2ヶ月前3...
-
コマンドプロンプト標準出力と...
-
コマンドプロンプト(バッチファ...
-
DOSのバッチで、変数中のファイ...
-
バッチファイルで常に最新の現...
-
バッチファイル テキストファイ...
-
子バッチ内のキー入力処理へ自...
-
VBアプリケーションで終了コー...
-
IPアドレスの第3オクテットだ...
-
コマンドプロンプト画面の閉じ...
-
呼び出し元バッチを知るには?
-
絶対パス名からファイル名を取...
-
コマンドプロンプト(バッチ)...
-
DOSのバッチで、テキストファイ...
-
バッチファイルに日付(ミリ秒...
-
コマンドプロンプト 半角スペー...
-
バッチファイル(for文)がうま...
おすすめ情報
ありがとうございます。
この方法でうまくいきました。
このご回答ではスプリットする方法を教えてくださったのですが
今後の応用のために
x64_AppleApplicationSupport_という文字列を置換して削除する方法も教えていただけないでしょうか?
もっと複雑なコードになるのでしょうか?
ありがとうございます。
解決しました。