下記に示すディレクトリ構造から、期待結果に示すようにtxtが
置かれているフォルダの1つ前のフォルダ名のみ表示させたいです。
調べたら変数内の何文字目~何文字目までを表示させる
方法はあるようです。
しかし、それでは下記のようなにディレクトリごとに
文字数が異なる環境の場合、求めるような結果になって
くれません。
私の知識、調べ方ではどうしようもなくなってしまい、
質問させていただいた次第です。
下記ディレクトリ構造から期待結果のように表示させることは
可能なのでしょうか?
[ディレクトリ構造]
D:\共通パス\AA\BBB\111.txt
D:\共通パス\CCC\DDDDD\222.txt
D:\共通パス\EEEE\FFFFFFFFF\333.txt
[期待結果]
AA
CCC
EEEE
[補足]
環境はWin10 64bitです。
色々試行錯誤してみましたが、書けているのは下記だけです・・・。
[実行batの処理内容]
※バッチはDドラ直下に置いているものとする。
for /F "delims=" %%a in ('dir /b /s') do echo %%a
[実行結果]
D:\共通パス\AA\BBB\111.txt
D:\共通パス\CCC\DDDDD\222.txt
D:\共通パス\EEEE\FFFFFFFFF\333.txt
No.2
- 回答日時:
もっと良いやりかたがあるのかもしれませんが……
こんな感じ?
ただしフォルダの深さは9個?までです。
@echo off
set src=ここにDIRコマンドのパスを書く
rem DIRの出力パスを一つずつ:EACH_PATHに渡す
for /f "usebackq" %%a in (`dir %src% /b /s`) do (
call :EACH_PATH %%a
)
goto :EOF
rem -----
rem 一つのパスを分解して:EACH_FOLDERに渡す
:EACH_PATH
set arg=%1
for /f "tokens=2-10 delims= " %%a in ("%arg:\= %") do (
call :EACH_FOLDER %%a %%b %%c %%d %%e %%f %%g %%h %%i
)
exit /b
rem -----
rem 渡されたフォルダ名とファイル名のうち最後から3番目を表示する
:EACH_FOLDER
set gparent=
set parent=
set child=
:LOOP
if "%1"=="" goto :EXIT_LOOP
set gparent=%parent%
set parent=%child%
set child=%1
shift
goto :LOOP
:EXIT_LOOP
rem 出力
echo out: %gparent%
exit /b
#Win10 64bitならバッチに拘らず、PowerShellの方が楽できますよ
No.3ベストアンサー
- 回答日時:
以下のような感じではいかがでしょうか。
ただ、バッチファイルの性質上、ターゲットのパスに特定の半角記号が含まれる場合の扱いが難しく、ある程度の記号には対応させましたが、「%」だけはどうしても私のスキルでは対応させられていません。
――――――――――――――――――――――
@echo off
for /F "delims=" %%a in ('dir *.txt /b /s') do (
call :SUB1 "%%a"
)
goto END
:SUB1
set DIR1="%~dp1"
set DIR2=%DIR1:^^=^%
pushd %DIR2%
pushd "..\"
set DIR3="%CD%"
popd
popd
call :SUB2 %DIR3%
exit /b 2
:SUB2
set DIR4="%~nx1"
set DIR5=%DIR4:&=^&%
echo %DIR5:"=%
exit /b 2
:END
pause
――――――――――――――――――――――
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- HTML・CSS Dreamweaver のテンプレートでの相対パスの設定について 2 2023/06/13 17:28
- 英語 提示した結果構文が非文となる理由について 1 2022/07/25 12:22
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- Visual Basic(VBA) batにて、異なるフォルダの同名ファイルを参照し、文字列を判別。擬似配列で変数へ格納 3 2022/04/10 03:37
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) [クイックアクセスツールバー]の設定ファイルの格納場所について、 5 2023/04/21 14:43
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでパワーシェルを実行したい...
-
バッチファイル 二つ上のディ...
-
エクセルvbaでdocuworksprinter...
-
SaveAsの保存先について
-
【VB.NET】App.configにファイ...
-
エクセルVBAで一つ上の階層...
-
EXCEL(VBA)で指定フォルダ内の...
-
AccessからExcel最小化
-
VB2005 でパス名が誤っていない...
-
Excel 相対パス
-
パスワード保護されたExcelファ...
-
VBAでテキストファイル中の文字...
-
Excel VBAでテキストファイルを...
-
CreateProcess error=0
-
ListViewにSETしたファイル...
-
指定したフォルダ内の最新ファ...
-
VBAで、VBのapp.pathと同じ機能...
-
ExcelのVBAで上書き保存を確...
-
iniファイルのパス取得m_pszPro...
-
FolderBrowserDialogについて-2
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 二つ上のディ...
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
Excel 相対パス
-
【VB.NET】App.configにファイ...
-
xcopyコマンドの進行状況を表示...
-
【VBA】ExcelマクロでCSVファイ...
-
EXCEL(VBA)で指定フォルダ内の...
-
エクセルのマクロで特定フォル...
-
パスワード保護されたExcelファ...
-
ExcelVBAの使い方 ¥の使い方...
-
開いているファイルを削除し、...
-
SaveAsの保存先について
-
初心者powershellのPS1ファイル...
-
fopenでのパス指定
-
VBA★PDFをPDFアプリで印刷し...
-
【Excel VBA】Power Qurry のソ...
-
指定したフォルダ内の最新ファ...
-
A列に記載されているフォルダ...
-
ExcelのVBAで上書き保存を確...
おすすめ情報