質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

Q&A

1回答

560閲覧

batにて上位階層が参照出来ない

zeijaku.net

総合スコア161

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

0グッド

1クリップ

投稿2018/01/18 01:38

編集2022/01/12 10:55

上位階層にあるファイルを参照しようとしていますが、環境によって参照出来ない場合があります。

SET LOG_DIR=..\server.log rem : ----------------- rem : 行数カウント rem : ----------------- FOR /f "delims=: tokens=2" %%A IN ('FIND %LOG_DIR% /c /v ""') DO SET /A LINES=%%A echo %LINES% rem : ----------------- rem : ログチェック rem : ----------------- for /f "delims=" %%a in (%LOG_DIR%) do ( call :SUB "%%a" )

Windows7上では問題なく上位階層のserver.logをログチェック出来るのですが、WindowsServer2012上ではログチェックの部分で下記のエラーが表示されます。

ファイル ..\server.log が見つかりません。

文字コードを変更したり変数をダウルクォーテーションで囲むなどしてもダメでした。
文法としては間違っていないと考えておりますが、WindowsServer2012上で参照出来ない理由が分かりません。
参照出来ない理由などあればご指摘いただければと思います。

追記:ログと同階層において SET LOG_DIR=server.log としてもエラーとなってしまいました
Windows7とWindowsServer2012では何か異なるということでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

okrt

2018/01/20 13:32

カレントフォルダは正しいでしょうか?
zeijaku.net

2018/01/24 14:10

こちらカレントフォルダに間違いはないと思います。
okrt

2018/01/28 13:19

今更ですが、タグは"Windows 7"と"Windows Server"だけではなく、"Windows"も入れたほうが良いかもしれませんね
guest

回答1

0

正直なところ私にはわからないのですが、回答者がいないようなので書いてみます。

かつて、「XPで使えたバッチファイルが2000では使えない(使える機能が異なる)」というトラブルを見たことはあります。しかし、7よりもServer2012のほうが新しいはずなので、今回の件に当てはまる可能性は低いですよね。
でもまあ、考え付く事柄を可能性が低くても列挙してみると、以下のような感じでしょうか。

・コマンドプロンプトの機能の違い
・カレントフォルダの位置が異なる
・・バッチファイル内で cd を実行して結果を確認する
・・..\server.log ではなく絶対パスで記述してみる
・ファイルのアクセス権や属性が異なる
・ファイルシステムの大文字と小文字を区別する設定になっている(直接の情報ではないですが https://support.microsoft.com/ja-jp/help/929110/a-file-system-that-was-case-sensitive-becomes-case-insensitive-after-y に、レジストリに関する記述あり。HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive )
・ログファイルのファイル名とバッチファイルの中身、どちらも人間の目にはserver.logに見えるけどコンピューターでの扱いは異なる表現になっている(例:Unicode制御文字のRLO http://www.atmarkit.co.jp/ait/articles/0909/28/news088_2.htmlhttp://ascii.jp/elem/000/000/633/633035/
・Cmd.exeに関連するレジストリ設定等の違い (https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc771320%28v=ws.11%29 および https://technet.microsoft.com/ja-jp/library/cc771320%28v=ws.10%29.aspx に、「コマンド拡張機能」の記述など色々あり。)
・ローカルセキュリティポリシーか何かそういう感じのやつ

ところで、
call :SUB
の行き先に関して何も書かれていないみたいですが、これは
「ファイルが見つからない問題には関係ないはずなので省略した」
ということでしょうか。

投稿2018/01/27 14:27

okrt

総合スコア366

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問