Win2000Proです。
以下のようなBATファイルとスクリプトバッチファイルを作成しました。

---FTP.bat---
(1)pause
(2)ftp -n -s:aaa.txt
(3)pause

---aaa.txt---
op localhost
user user pass
ls
close
quit

このBATファイルを実行すると(1)(2)文の無限ループになってしまい
肝心のftpコマンドは実行されません。
DOSプロンプトから手入力で入力すると実行はできます。
また、BATファイル自体、
(1)pause
(2)dir
(3)pause
のように書き換えると問題なく実行できます。
(1)pause
(2)ftp
(3)pause
のように書き換えても同じくループされます。

わかる方いらっしゃいますでしょうか?
よろしくお願いします。

A 回答 (2件)

こんにちは。



ftp.bat を以下の通り修正すれば、正常に動作するようになります。

---FTP.bat---
(1)pause
(2)ftp.exe -n -s:aaa.txt
(3)pause

(2)で、拡張子を省略されていましたが
省略した場合、同名のバッチファイル(ftp.bat)が優先的に実行されるので
無限ループに陥ったのだと思われます。
    • good
    • 0
この回答へのお礼

ftp.exeより優先してbatファイルが実行されていたのですね。解決できました。ありがとうございました。

お礼日時:2005/04/15 17:57

FTP.bat



FTPLS.bat
などに名前を変更する
    • good
    • 0
この回答へのお礼

ftp.exeより優先してbatファイルが実行されるのでbatファイルの名称を変更してもOKですね。解決できました。ありがとうございました。

お礼日時:2005/04/15 17:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q環境変数PATHをスクリプトかバッチから設定する方法

社内研修の準備のために、何台ものパソコン(Windows XPを想定)のセットアップを
行うことがありまして、
・ZIPファイルの展開
・展開後フォルダを特定の場所へ配置
・環境変数JAVA_HOMEとPATHの変更
などをバッチやJavaScriptを利用して自動的に処理させようと
しています。ZIPの展開と配置は解決できたのですが、
環境変数(pathなど)をスクリプトかバッチから設定できないでしょうか?

JavaScript(またはVBスクリプト)で次のように記述すると、
一見うまくいったように見えるのですが、レジストリが書き換わるだけで、
再起動しないとpathが有効になりませんでした。(スクリプト実行後に開いた
コマンドプロンプトで echo %path% をしても反映されていない。)

<setenvion.js>
var shell = WScript.CreateObject("WScript.shell");
shell.RegWrite("HKEY_CURRENT_USER\\Environment\\path",
"C:\\Program Files\\Java\\jdk1.6.0_06\\bin",
"REG_EXPAND_SZ");

googleで検索しても、バッチを実行するためにpathを設定しましょう、みたいな
情報しか見つからないので、質問させていただきました。
上記のスクリプトでも再起動すれば反映されるのでその点我慢すればよいのですが、
なにかよい方法をご存知の方、よろしくお願いします。

社内研修の準備のために、何台ものパソコン(Windows XPを想定)のセットアップを
行うことがありまして、
・ZIPファイルの展開
・展開後フォルダを特定の場所へ配置
・環境変数JAVA_HOMEとPATHの変更
などをバッチやJavaScriptを利用して自動的に処理させようと
しています。ZIPの展開と配置は解決できたのですが、
環境変数(pathなど)をスクリプトかバッチから設定できないでしょうか?

JavaScript(またはVBスクリプト)で次のように記述すると、
一見うまくいったように見えるのですが、レジスト...続きを読む

Aベストアンサー

スクリプトでもバッチでも

http://www.atmarkit.co.jp/fwin2k/win2ktips/460envset/envset.html
http://www.atmarkit.co.jp/fwin2k/win2ktips/1003setx/setx.html

QCygwinのコマンドラインから.batを実行可能?

伺いたい事はタイトルの通りです。下を試しましたが失敗でした。
1) test.batを作る。中はecho testのみ。
2) Cygwin起動。カレントディレクトリには上記test.batが在る。
3) test.batと打つ。が、bash: test.bat: command not foundと出てしまう。
※上記をDOS窓でやると、勿論 成功します。

・ネットでの情報検索や試行錯誤による実験を散々反復しましたが、主格無し。
・(検査用でなく)本来の既存.batファイルをシェルスクリプト化(移植)するのは、膨大な時を要す為 非現実的である。
・急務である。

事から、皆さんのお知恵を拝借しようと考えた次第です。
環境:WinXP Pro + MicrosoftUpdateの全内容

以上どうぞ宜しくお願い致します。

Aベストアンサー

こんにちは。

 コマンドパスにカレントディレクトリは入っていますか?
 入っていなかったら、「./test.bat」もしくは「bash test.bat」とやったらどうでしょう。

では。

Qバッチファイルで、あるスクリプトがエラーになっても、つぎのスクリプトを実行させたい

バッチファイルで、あるスクリプトがエラーになっても、つぎのスクリプトを実行させたいと考えています。
具体的には、
■call.bat■
******************
call 1.bat
call 2.bat
******************


■1.bat■
******************
mkdir test1
******************

■2.bat■
******************
mkdir test2
******************

の3つのバッチファイルで、1.batがエラーになっても
2.batを実行させたいと考えています。
どうしたらいいのでしょうか。

よろしくお願いします。

Aベストアンサー

>1.batが終了しなくても、
>2.batを実行させたいと考えています。

なるほど。簡単そうに出来るのは
start cmd /C 1.bat
start cmd /C 2.bat
ですかね。

Qbatを逐次呼ぶbatファイルをバックグラウンド起動したい

バックグラウンド起動するときは、STARTを使う、ということまではわかったのですが、

---a.bat---
@echo off

start b.bat
exit
-----------


---b.bat---
@echo off

start /wait c.bat
start /wait d.bat

echo end
exit
-----------

とすると、b.batのc.batを起動した時点で終了してしまうようです。

b.bat起動→c.bat起動→d.bat起動→「end」表示
とするにはどうしたらいいでしょうか?

b.batの内容を出来ればしなくないのですが…。

Aベストアンサー

callじゃ駄目なのですか?
@echo off

call b.bat
call c.bat
call d.bat

echo end

Qcmdの起動時におけるバッチスクリプトの自動実行

こんにちは。

OSは現在、64bit版のWindows7を使っています。
コマンドプトンプト(C:\Windows\System32\cmd.exe)の実行時に、
自動で実行するバッチスクリプトを設定するには、
レジストリキーの
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
に、AutoRunという文字列値を作成し、そのデータに、バッチスクリプトのパスを記述します。
以前までこの方法で、
C:\Users\kei\cmdprofile.bat
というバッチスクリプトが、コマンドプロンプトの起動時に呼び出されるように設定していました。
最近、これを実行しないようにしようと思い、
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
に、AutoRunという文字列値を削除しました。
ところが、依然と同じように、C:\Users\kei\cmdprofile.batが、コマンドプロンプトが起動する度に実行されてしまいます。
そこで、バッチスクリプトの名前をprofile.batに変更してコマンドプロンプトを起動させた所、
「C:\Users\kei\cmdprofile.bat は存在しない」
といったエラーメッセージが表示されました。
どうやら、C:\Users\kei\cmdprofile.batを自動実行する設定が解除されていないようなんです。
一体どうすれば、このバッチスクリプトの自動実行を解除する事ができるのでしょうか?

何か御存じの方がいらっしゃれば、是非、情報を提供して頂きたく思います。
では、よろしくお願い致します。

こんにちは。

OSは現在、64bit版のWindows7を使っています。
コマンドプトンプト(C:\Windows\System32\cmd.exe)の実行時に、
自動で実行するバッチスクリプトを設定するには、
レジストリキーの
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
に、AutoRunという文字列値を作成し、そのデータに、バッチスクリプトのパスを記述します。
以前までこの方法で、
C:\Users\kei\cmdprofile.bat
というバッチスクリプトが、コマンドプロンプトの起動時に呼び出されるように設定していました。
最近、これを実...続きを読む

Aベストアンサー

ANo2です。

激動たる俺RegEdit改でも通常のRegeditでもOKですがAutRunではなく
パスの記述 C:\Users\kei\cmdprofile.bat
を検索してみてはいかがでしょうか?

Q信頼済みサイト登録をbatファイルで

Windows7 の IE8です
IEプロパティー → セキュリティー → ローカルインターネット → 信頼済みサイトの追加(192.168.*.*) を bat ファイルで追加したいのですが うまくいきません。 エクスポートすれば済む話なのですが運用上どうしても、コマンドライン(bat)に追加しなければなりません。
実行すると構文エラー・・・ と出てしまいます。
一度エクスポートしたレジストリを再度編集しようと思ったのですが根本から違うのでしょうか?

お分かりの方 ご教授いただけると助かります。

以下(失敗)レジストリ
********
REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges /ve Range1
REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range1 /v * /t REG_DWORD /d 1 /f
REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range1 /v :Range /t REG_SZ /d 192.168.*.* /f

Windows7 の IE8です
IEプロパティー → セキュリティー → ローカルインターネット → 信頼済みサイトの追加(192.168.*.*) を bat ファイルで追加したいのですが うまくいきません。 エクスポートすれば済む話なのですが運用上どうしても、コマンドライン(bat)に追加しなければなりません。
実行すると構文エラー・・・ と出てしまいます。
一度エクスポートしたレジストリを再度編集しようと思ったのですが根本から違うのでしょうか?

お分かりの方 ご教授いただけると助かります。

以下(失敗...続きを読む

Aベストアンサー

このまま実行すると、たぶん途中にスペースが入っているからそこで引っかかりそうな気がしますね。

REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges" /ve Range1

というように、ダブルクォートでくくってみてはどうですかね?

Qバッチかスクリプト

こんにちは、早速ですがある共有フォルダ内にあるフォルダやファイルを一発で消せるバッチ又はスクリプトの書き方を教えてください(もちろんアクセス権は有効である条件のもとで)。ちなみにOSはNT4.0です。

Aベストアンサー

こんにちは、honiyonです。

 ありゃ、ほんとですね(^^;

 では、rmdir を使用しましょう。

  rmdir /s [DIR名]

 とします。
 削除確認のメッセージを表示させない場合は、更に /q を付け足せばOKです。
 ヘルプは、rmdir /? で出ます。

 今度はフォルダが消えている事を確認出来ました。(Win2000の場合)

 参考になれば幸いです(..

Q遠隔地にあるパソコンのオフィスVBAプログラムを起動 (実行) その実行画面を見たい

必要があり、地方にあるパソコンの Office (VBAプログラム) を東京の事務所から実行しています。
10年以上、毎日実行を続けて、ほとんど問題なく過ごしてきました。

方法はリモートデスクトップを使う方法もありますが回線が細く、かつ複数人数の同時使用のため、TELNET を使いコマンドプロンプト (CUI) で ExcelやAccess を起動しています。
その実行中の画面は、通常であれば見る必要が無く、実行結果だけを受け取っています。
しかしトラブルがあったときは、実行中の画面を見たくなります。

以前、パソコンが Windows xp の時は、ごくまれにトラブルが起きた時、リモートデスクトップを開けばTELNETで起動し実行中の画面がそのまま表示され、状況確認が出来ましたが Windows 7 になってからは表示されなくなってしまいました。

そのためトラブルの再現性が少ない時、原因究明ができなくなってしまいました。

もし Windows 7 で TELNET で起動したOffice (VBAプログラム) の GUI画面を表示する方法がありましたら、教えて下さい。
なお TELNET のユーザーとリモートデスクトップのユーザーIDを同じにしても、実行中のGUI画面は表示されません。

必要があり、地方にあるパソコンの Office (VBAプログラム) を東京の事務所から実行しています。
10年以上、毎日実行を続けて、ほとんど問題なく過ごしてきました。

方法はリモートデスクトップを使う方法もありますが回線が細く、かつ複数人数の同時使用のため、TELNET を使いコマンドプロンプト (CUI) で ExcelやAccess を起動しています。
その実行中の画面は、通常であれば見る必要が無く、実行結果だけを受け取っています。
しかしトラブルがあったときは、実行中の画面を見たくなります。

以前、パ...続きを読む

Aベストアンサー

直接的に見る方法は現実的な方法ではありません。
VBAのエラーはどこまで行ってもアプリケーション内エラーですのでサービスホストで取得できる例外まで持ってゆく事が難しいです。

方向性がやや変わりますが解決方法になりますが以下のような方法を提案いたします。

■解決方法1
エラーが起こった場合原因を標準出力またはファイルに出力するようにマクロを修正する。
「VBA 標準出力」等で検索するとよいかと思います。
利点:エラーが起きた時そのものが見れる、どんなデータを処理していたか今まで以上に多くのエラー情報を出力できる
欠点:新たな不具合を作りこむ可能性がある

■解決方法2
問題が起き解析が必要になった時点でリモートデスクトップで同じマクロを再実行する。
利点:マクロに対して変更が不要
欠点:既存マクロがエラー発生時のデータクリア不足の場合、ジャンクデータを今まで以上に生成する危険がある

Qバッチスクリプトについて

現在OSはXPを使用しています。

iPodビデオを作る際、音量がファイル枚に不均一のため、Sound Engine Free ver.2.96bのオートマキシマイズで均一化をしてます。
ちなみに13dBに設定してます。

wavファイルの読み込みでプログラムがwavを読んで波形が出るところまでのスクリプトなら書けるのですが、
変換するファイル数が膨大にあるため、読み込みの後、オートマキシマイズで均一化、変更の保存、プログラム終了まで自動で行うバッチスクリプトが書きたいのですが、検索してもいまいち分かりませんでした。
どなたかご教授願います。
手動でやるしかないなら諦めて1ファイルずつ変換していきます…。

Aベストアンサー

ハードリンクというのは「既存のファイルに対する別名」です. つまり, 「別名」を作ることで 1つのフォルダにすべてのファイルを集めてしまい, そのフォルダに対して Foler Open などを使ってやろうという趣旨です.
以下, すべてはコマンドプロンプトで実行することになります:
[注意]
実際に実行するとファイルを破壊してしまったりするかもしれません. 特に, ハードリンクを作ったり削除したりすることになるので, 「元のファイルが変更できていない」「元のファイルごと削除してしまった」などの問題が発生する可能性は否定できません. あらかじめバックアップをとるなどして「壊れてしまっても大丈夫」という状況にしてから実行することをお勧めします.
[注意終わり]
まず,
for /r d:\ipod %f in (*.wav) do echo %f
とやると「d:\ipod 以下にあるすべての wav ファイル」が表示されるはずです.
そこで, (fsutil を実行するので管理者権限が必要かもしれません) 以下のコマンドを順次実行します:
d:
cd \
mkdir hogehoge
cd hogehoge
cmd /v:on
set i=1
for /r d:\ipod %f in (*.wav) do fsutil hardlink create "%f" !i!.wav & set /a i=!i!+1
この時点で, d:\ipod にあるすべての wav ファイルに対し, カレントフォルダ (d:\hogehoge) の中にハードリンクが作られます.
そこで, SoundEngine のスクリプトから Folder Open などを使って「カレントフォルダにあるすべての wav ファイル」をオートマキシマイズします. これで, 原理的には「d:\ipod 以下にあるすべての wav ファイルに対してオートマキシマイズした」のと同じ結果になっているはずです.
あとは
del *.wav
cd ..
rd hogehoge
exit
で証拠隠滅.
上の [注意] でも書きましたが, ここで「ファイルの削除」を行っているため最悪の場合「元のファイルをすべて消してしまった」ということになるかもしれません. 私は試していないので, 「これでいける」とまではいえません. ファイルの少なそうなフォルダをコピーしておき, そのコピーに対して同じようなことをして「ちゃんと動いている」ことを確かめてから本来の対象に対して実行することを強くお勧めします.

ハードリンクというのは「既存のファイルに対する別名」です. つまり, 「別名」を作ることで 1つのフォルダにすべてのファイルを集めてしまい, そのフォルダに対して Foler Open などを使ってやろうという趣旨です.
以下, すべてはコマンドプロンプトで実行することになります:
[注意]
実際に実行するとファイルを破壊してしまったりするかもしれません. 特に, ハードリンクを作ったり削除したりすることになるので, 「元のファイルが変更できていない」「元のファイルごと削除してしまった」などの問題が発生...続きを読む

Q.batファイル作成 set コマンドの使い方

.batファイルで、以下のような処理をしたいのですが・・・
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

例1
(1)set /p name="名前を入力しなさい⇒"
と打ちます。

(2)すると
名前を入力しなさい⇒
と出てくるので、"無名"と入力するとします。
変数 name=無名 が登録されます。

(3)そして↓

echo 私の名前は%name%です
私の名前は無名です

と表示されるわけですが、

(4)さらに、出力された"私の名前は無名です"をbodyという変数にセットしたいとします。

.batファイル内で構文をどのようにかけばよいのでしょうか?
お教え願います。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
例2

上記の様な処理で、変数bodyに文書を登録したいのですが、一行ではなく、改行やスペーウを加えて何行かにまたがる、長い文書を登録する事は可能でしょうか?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

上記2件について、お教えいただえればと思います。
よろしくお願いたします。

.batファイルで、以下のような処理をしたいのですが・・・
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

例1
(1)set /p name="名前を入力しなさい⇒"
と打ちます。

(2)すると
名前を入力しなさい⇒
と出てくるので、"無名"と入力するとします。
変数 name=無名 が登録されます。

(3)そして↓

echo 私の名前は%name%です
私の名前は無名です

と表示されるわけですが、

(4)さらに、出力された"私の名前は無名です"をbodyという変数にセットしたいとします。
...続きを読む

Aベストアンサー

例1.
for /f "delims=" %%i in ('echo 私の名前は%name%です') do set body=%%i

上記の"for"文で、('echo 私の名前は%name%です')の実行結果(画面出力)が変数 %%i に入り、"do" 以降の "set body=%%i"が実行されます。
画面出力に半角スペースを含んでいる場合を考慮して、"delims="オプションで半角スペースを区切り文字として認識しないように指定しています。

例2.
http://okwave.jp/qa/q5725995.html
↑のもう一つの質問と関連しているようなので、合わせての回答になります。
予め、テキストエディタの置換機能を利用して、テキストファイル文中の特殊文字(改行やスペース)を%文字コードの形式に置換しておきます。

例1.の"私の名前は無名です"が、bodyに既にセットされているとして、

for /f "usebackq delims=" %%i in ("C:\Documents and Settings\hogehoge\My Documents\hogehoge.txt") do set body=%body%%0d%0a%%i

で、bodyに、

私の名前は無名です%0d%0a~~~~~~~~~~~(←hogehoge.txtの中身)

がセットされます。

詳しくは、"for /?"でヘルプを参照してください。
また、環境変数 name、body の参照や"for"文中の変数 i 、特殊文字の文字コードを指定する"%"と、"%"がいくつも使われていますので、"%"の数にご注意ください。それぞれ、

%name%
%body%
%%i
%0d%0a

で一区切りの意味になります。

例1.
for /f "delims=" %%i in ('echo 私の名前は%name%です') do set body=%%i

上記の"for"文で、('echo 私の名前は%name%です')の実行結果(画面出力)が変数 %%i に入り、"do" 以降の "set body=%%i"が実行されます。
画面出力に半角スペースを含んでいる場合を考慮して、"delims="オプションで半角スペースを区切り文字として認識しないように指定しています。

例2.
http://okwave.jp/qa/q5725995.html
↑のもう一つの質問と関連しているようなので、合わせての回答になります。
予め、テキストエ...続きを読む


人気Q&Aランキング

おすすめ情報