
サーバー上のフォルダのlogファイルをforで処理したいのですができません。
遅延環境変数設定済みです。
バッチファイルで
Logをソフトを使って同じサーバー上フォルダに、
CSVファイルとして連続出力処理したいのですが、
できません。
ソフトですが、
引数は、1)LOG名2)出力CSV名で動きます。
たぶんディレクトリ引き渡しがうまくできていないと思いますが、
cd /d %~dp0 使ってます。
PC上でなら可能なのですが、
ファイルは、*.Log指定でfor処理しています。
OSはWindows7Proです。
それなりにgoogle見ましたがうごかないので、
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
こちらで動作確認してみましたが、以下のような感じにすると動作するかと思います。
――――――――――――――
@echo off
cls
setlocal enabledelayedexpansion
set num=1
pushd "%Temp%"
pushd "%~dp0"
if not "%ErrorLevel%"=="0" exit /b
copy nul log999.csv
for %%i in (*.log) do (
call "%~dp0Hoge.exe" %%i hoge!num!.csv
type "%~dp0hoge!num!.csv" >> "%~dp0log999.csv"
set /a num=!num!+1
)
popd
――――――――――――――
「cls」は、最初に出るメッセージを消す為のものです。特に処理的な意味はありません。
「pushd」は、「cd /d」と同じようにカレントディレクトリを変更するコマンドですが、UNCパスを指定すると、自動で空きドライブに対象フォルダがマップされ、アクセス出来るようになります。
その後、「popd」を実行すると、カレントディレクトリは以前のフォルダへ戻り、ドライブのマップも解除されます。
ただ、「popd」が実行される前にコマンドプロンプトを右上の「×」ボタン等で閉じてしまうと、対象フォルダがドライブとしてマップされたままになりますので、その場合は、「コンピューター」を開き、対象ネットワークドライブを右クリックし、「切断」をクリックするとドライブの割り当てが解除出来ます。
ネットワークドライブの切断をコマンドプロンプトやバッチファイルで実行する場合は、「net use ドライブレター: /delete」という書式で実行します。例えば、Xドライブを切断したい場合は「net use X: /delete」を実行します。
「pushd "%Temp%"」は、カレントディレクトをTempフォルダに変更する処理です。Windowsフォルダがカレントディレクトリだと不安なので、念のための変更です。
「if not "%ErrorLevel%"=="0" exit /b 」は、「もし、エラーレベルが0でない(正常終了ではない)場合は、このバッチファイルを終了する」という処理です。つまり、カレントディレクトリの変更に失敗した場合です。これも念の為の処理です。
ざっと動作確認しただけなので、完璧ではないかも知れませんが、ご自身の環境や用途に合わせて手直しして使ってみてください。
素晴らしくわかりやすい回答、ありがとうございます。
pushd,popdについては、勉強させていただきます。
サーバー上で動いてます。
解決です。
驚きと達成感を与えてくれたこの回答、ベストアンサーとさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ドメイン・サーバー・クラウドサービス 自作サイトをサーバーにアップロードしたのですが… 2 2022/11/08 18:12
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) 複数ブックの統合について Excel VBA 1 2022/05/13 09:48
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- PDF PDFを自動添付したメールを送信してくれるツールを探しています。 2 2023/02/07 15:19
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Excel(エクセル) パスワード付きExcelブックについて 4 2022/06/02 21:34
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- UNIX・Linux サーバー間のデータコピー(データ形式とデーターフォーマットの変換あり。一定間隔で処理) 2 2023/08/22 22:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
フォルダの中身がカラか調べる
-
パス名に2バイト文字(マルチバ...
-
クラウドにあるフォルダを共有...
-
Excelvbaでブックをコピー名前...
-
C ファイル出力で、フォルダが...
-
ファイルとフォルダのどちらも...
-
IISの設定
-
VB6 CommonDialog フォルダ上書...
-
Excel(VBAの処理も入ると思う...
-
META-INFフォルダの置き場所に...
-
デスクトップにだけ保存できない!
-
VB.NRT FolderBrowserDialogを...
-
エクセルのリンクやマクロの有...
-
(C#)フォルダを指定するダイ...
-
GetPrivateProfileString関数
-
Access VBA で フォルダ権限...
-
レイアウトが崩れてしまいます、、
-
フォルダを開いて、閉じるのプ...
-
エクセルのデータをメモ帳に貼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
会社のネットワーク上のファイ...
-
パス名に2バイト文字(マルチバ...
-
デスクトップの画像をhtmlに表...
-
【マクロ】ファイル名の日付に...
-
C ファイル出力で、フォルダが...
-
ファイル名と同名のフォルダを...
-
Excelのハイパーリンクについて...
-
VBA 最新のフォルダ取得
-
Excelで指定したフォルダに保存...
-
VBAでファイル名を指定して保存...
-
Access VBA で フォルダ権限...
-
サーバ内のフォルダ名と各フォ...
-
excelマクロ 冒頭3文字が一致す...
-
VBA フォルダ名に特定の文字を...
-
カレントフォルダって?
-
Excel VBA マクロ フォルダ名を...
-
VBA フォルダの複数選択ができない
-
ExcelVBAでフォルダへのハイパ...
-
ExcelのVBAでフォルダ指定がで...
おすすめ情報
バッチファイル後で、追加します。
@echo off
setlocal enabledelayedexpansion
set num=1
cd /d %~dp0
copy nul %~dp0log999.csv
for %%i in (*.log) do(
call %~dp0Hoge.exe %%i hoge!num!.csv
type %dp0hoge!num!.csv >> %~dp0log999.csv
set /a num=!num!+1
)
CMDでは、UNCパスは現在のディレクトリとしてサポートできない
→%%iが渡せない。
であってるのか?
かといって、直し方がわからない。