- 締切済み
コマンドプロンプトで相対パスの取得
コマンドプロンプトにて、絶対パスから相対パスを取得する方法はございますでしょうか? hoge ├ hoge2.txt └ hoge3.txt という階層で、 for %%A in (hoge\*.txt) do ( echo %%A ) と for で回すと、%%Aには絶対パスが入ります。 この%%Aに相対パス(hoge\hoge2.txt)を格納する方法、もしくは%%Aから相対パスを抜き出す方法が知りたいのです。 VBなど別プログラムを起動させずに、あくまでもコマンドプロンプト上での方法がありましたら、どうかご教授下さいませ。
- usio199643
- お礼率100% (3/3)
- その他([技術者向] コンピューター)
- 回答数3
- ありがとう数4
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- rub_oil
- ベストアンサー率14% (3/21)
当方、環境はXpSP3です。 カレントをC:\に移動し、コマンドライン上より実行しました。 C:\>for %a in (wrk\*.csv) do echo %a コマンドの細部が違う事などは了解してくださいね。 で、結果が wrk\data3.csv で、XpSP3でも相対パスしか入りませんでした。
- Tacosan
- ベストアンサー率23% (3656/15482)
たぶんスクリプトだと思うので作って実行してみましたが, 手元の Vista Business でテストする限りでは相対パスになってますねぇ. cドライブではテストできなかったので dドライブでやってますが, d:\>dir /s hoge2.txt で d:\Test1\Test2\hoge\hoge2.txt だけが出る状況で d:\ に cd Test1\Test2 for %%A in (hoge\*.txt) do (echo %%A) という内容のスクリプトを作って実行しましたが, hoge\hoge2.txt しか表示されませんでした.
お礼
N0.1の方へのお礼にも書きましたが、/r パラメータを付けていたのが、絶対パスとなった原因でした。 詳しい検証を誠にありがとうございます。 お陰様でミスの原因に気付けました。 ご回答、ありがとうございました。
- Tacosan
- ベストアンサー率23% (3656/15482)
あれ? それで絶対パスが入りますか? 手元の Vista では相対パスになっているんですけど....
お礼
for のパラメータに /r を付けていたのが原因でした。 /r で探索すると絶対パスになってしまうのですね。 パラメータを外せば、ちゃんと相対パスになりました。 OSの違いは関係ありませんでしたね。大変失礼致しました。 ご回答頂き、ありがとうございます。
補足
私の環境はXPです。 VistaとXPの違いでしょうか・・・ 例えば、 C:\Test1\Test2\hoge\hoge2.txt という階層で、 cd C:\Test1\Test2 for %%A in (hoge\*.txt) do ( echo %%A ) と走らせると、 C:\Test1\Test2\hoge\hoge2.txt と表示されます。Vistaでは hoge\hoge2.txt となるのでしょうか?
関連するQ&A
- 相対パスから絶対パスの取得
相対パスを指定することにより、絶対パスを取得したいのですが・・・。 どうすればいいでしょうか? ■状況■ VB6.0 Windows2000 ひとつ上の階層に行きそこのTableフォルダ内のsample.htmlのパスを取得したい。 Dir$("..\Table\sample.html")としてみたのですができませんでした。
- ベストアンサー
- Visual Basic
- コマンドプロンプトのfor文の処理について
以下のようなスクリプトを書き,拡張子を除いた文字列を抽出できているようなのですが, for文の中の ”echo”で出力することができません. 具体的には,入力として,「hoge01.txt」 を与え 「hoge01」 を抽出したいです. 出力結果として 「echoはONです」 とでます. for文の後のechoでは,「hoge01」と問題なく出力されます. これは何故なのかご教授していただけませんでしょうか? ------------------------------------------- for %%i in (*.txt) do (set/p c=%%~ni & echo %c%) echo %c% ------------------------------------------- for文の中だと,変数の指定方法等が異なるのでしょうか? 勉強不足で大変恐縮ですが,どうぞよろしくお願いいたします.
- ベストアンサー
- その他(プログラミング・開発)
- コマンドプロンプトのスクリプトの意味がわかりません
こんにちは。コマンドプロンプトの意味がわかりません。お教え頂けませんでしょうか? http://bgworks.info/blog/2007/01/echo_type.html @echo off setlocal set o=a.log if "%~1"=="" exit /b cd %1 || exit /b if exist %o% del %o% for /r %%a in (*.txt *.htm*) do >> "%~1\%o%" (echo %%a && type "%%a") endlocal 調べてみて、if exist %o% del %o%までは理解ができました。 次の行の、forループで再帰的に何かをやるところまではわかりましたが、そこからがよくわかりません・・・ ご解説お願い致します!
- ベストアンサー
- その他(プログラミング・開発)
- 【DOSコマンド】for文の中で変数をカウントアップしたい。
【DOSコマンド】for文の中で変数をカウントアップしたい。 【現在のソース】 for %%i in (\\hoge\hoge\*.*) do ( echo %%i,%%~ziバイト >> log.txt type nul > %%i ) 【現在の処理内容】 とあるフォルダの中になる全ファイルのパス、サイズをログファイルに書き出し、、 全ファイルを0バイトにクリアする。 【やりたいこと】 ログファイルにファイルパス、サイズを書き出す際に連番を出力したい。 例) 1,\\hoge\hoge\aaa.txt 2,\\hoge\hoge\ddd.txt 3,\\hoge\hoge\123.txt 【現在までに試みた方法】 for文の外で「set n=0」。 for文の中で「set /a n=%n%+1」「echo %%n」 【環境】 XP Pro Version2002 SP2 DOSコマンドの変数に関する理解がいまひとつで、よくわかりません。 ご存知の方がいらっしゃいましたらご教示いただけると幸いです。
- ベストアンサー
- Windows系OS
- 相対パスが使えない
EXCELのファイルを呼び出したいのですが,絶対パスで e:\vb6.0\book1.xls と指定するとファイルが開くのですが, 相対パスで .\book1.xls と指定するとファイルが開けません。 なぜでしょうか? EXCELのファイルとvbのファイルは同じフォルダ内にあります.
- ベストアンサー
- Visual Basic
- コマンドプロンプト ファイル名変更
お世話になります。 コマンドプロンプトで”123HOGE.txt”というファイル名に"123-HOGE.txt"という風に123とHOGEの間に"-"を挿入したいのです。 ただこの123は伝票番号で長さが123-99999まで可変なのです。 HOGEは固定なので、"HOGEの前に-を入れろ"というロジックが作りたいのです。 どなたかご教授いただけませんでしょうか? よろしくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- コマンドプロンプトの初期パス
コマンドプロンプトを起動した時のパス (プロンプト)を任意に設定したいのですが、 方法を御教授下さい。 (例) C:\> を C:\example> に よろしくお願いします。
- ベストアンサー
- Windows XP
- コマンドプロンプト標準出力とファイル出力両方
お世話になってます コマンドプロンプトで echo "こんにちは" とするとプロンプトに こんにちは と書き込まれます。 echo "こんにちは" >> file.txt とするとfile.txtに こんにちは と書き込まれます。 では、1行で プロンプトとfile.txtの両方に こんにちは と書き込むことは出来ますか? file.txtは上書きではなく、追記で行いたく思ってます。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- コマンドプロンプトで簡単なファイルの読み込み
ファイルAの場所 C:\file.txt ファイルBの場所 D:\file.txt それぞれのファイルには一行の文字が書かれています。 バッチファイルを使って、この二つのファイルを読み込み、内容が同じであれば、"same"をecho、そうでなければファイルAをファイルBに上書きするというバッチを作りたいのですが、コマンドプロンプトは使ったことがないので、よくわかりません。 調べてみましたが、for /fを使うのでしょうか?それぞれのファイルは一行しか文字を含まないので、もっと簡単にできそうな気もするんですけどどうなんでしょう。
- ベストアンサー
- その他(プログラミング・開発)
お礼
No.1の方へのお礼にも書きましたが、/r パラメータを付けていたのが、絶対パスとなった原因でした。 同じ環境での実証を誠にありがとうございます。 皆さんが挙って相対パスと指摘下さったお陰で、こちらのミスに気付けました。 ご回答、ありがとうございました。