
バッチファイルのあるフォルダー内の
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で質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) vbaサブフォルダーをワイルドカードで取得したい 2 2022/11/15 08:04
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
このQ&Aを見た人はこんなQ&Aも見ています
-
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
絶対パス名からファイル名を取り出して、変数に格納するバッチ
その他(プログラミング・Web制作)
-
-
4
コマンドプロンプトによるフォルダ内のファイル存在有無
UNIX・Linux
-
5
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
6
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
7
バッチで特定文字が含まれる先頭行を取得したい
Windows Me・NT・2000
-
8
バッチファイルでテキストファイルの1行目だけ変更
その他(プログラミング・Web制作)
-
9
テキストファイルから最終行の抽出
Windows Me・NT・2000
-
10
【バッチファイル】ホスト名をファイル名につけたい【変更】
その他(コンピューター・テクノロジー)
-
11
コマンドプロンプトでファイル一覧を変数に入れる方法
その他(プログラミング・Web制作)
-
12
Dosブロンプトでtabを出力したい
その他(プログラミング・Web制作)
-
13
バッチファイル テキストファイル内の最後の\\以下を削除したい
その他(プログラミング・Web制作)
-
14
フォルダ内の更新日時が一番新しいファイルを開きたい
その他(プログラミング・Web制作)
-
15
コマンドの結果を変数に入れたい
Windows 10
-
16
バッチ処理 特定の文字以降をリネーム
Ruby
-
17
echo abc" >> test.txt で、先頭に追加するには?"
その他(OS)
-
18
バッチファイルのコピーで
その他(プログラミング・Web制作)
-
19
txtファイルから特定の文字列が書かれた行だけを取得や削除するソフト
フリーソフト
-
20
Windows版 pg_dumpの結果をログ取得
PostgreSQL
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチでテキストファイルから...
-
バッチファイルで常に最新の現...
-
子バッチ内のキー入力処理へ自...
-
バッチファイル テキストファイ...
-
コマンドプロンプトで2ヶ月前3...
-
DOSのバッチで、変数中のファイ...
-
バッチファイルで昨日の日付を取得
-
コマンドプロンプト画面の閉じ...
-
VBアプリケーションで終了コー...
-
バッチファイルでDirで取得した...
-
コマンドプロンプト(バッチファ...
-
ファイル名に日時挿入バッチフ...
-
絶対パス名からファイル名を取...
-
Excelで住所録を地域ごとに振り...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
exeファイルを実行するとコマン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチでテキストファイルから...
-
バッチファイルで昨日の日付を取得
-
バッチファイルでDirで取得した...
-
コマンドプロンプトで2ヶ月前3...
-
コマンドプロンプト標準出力と...
-
コマンドプロンプト(バッチファ...
-
DOSのバッチで、変数中のファイ...
-
バッチファイルで常に最新の現...
-
バッチファイル テキストファイ...
-
子バッチ内のキー入力処理へ自...
-
VBアプリケーションで終了コー...
-
IPアドレスの第3オクテットだ...
-
コマンドプロンプト画面の閉じ...
-
呼び出し元バッチを知るには?
-
絶対パス名からファイル名を取...
-
コマンドプロンプト(バッチ)...
-
DOSのバッチで、テキストファイ...
-
バッチファイルに日付(ミリ秒...
-
コマンドプロンプト 半角スペー...
-
バッチファイル(for文)がうま...
おすすめ情報
ありがとうございます。
この方法でうまくいきました。
このご回答ではスプリットする方法を教えてくださったのですが
今後の応用のために
x64_AppleApplicationSupport_という文字列を置換して削除する方法も教えていただけないでしょうか?
もっと複雑なコードになるのでしょうか?
ありがとうございます。
解決しました。