痔になりやすい生活習慣とは?

FTP先のファイル名を以下のように変更したいです。

rename *.txt *.csv

これを実行すると
550 *.txt: The filename, directory name, or volume label syntax is incorrect.

となってしまいます。
ワイルドカードは使用できると思っていたのですが、
何がいけないのでしょうか?
ちなみに
rename 111.txt 111.csv
と指定した場合は問題なくできます。
複数のファイルを変換したいので困っています。
環境はWindows2000です。宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

いちど、ダウンロードして、


ソフトなどで、ranemeして、アップロードするのはどうでしょうか?
http://download.goo.ne.jp/software/category/win/ …

http://www.atmarkit.co.jp/fnetwork/rensai/netpro …
FTPのレスポンスコード550について書かれています。

*.txtは不正確なファイル名とゆうことになり、実行できないのだと思います。

この回答への補足

bob_nさん、レスありがとうございます。
とても参考になりました。

今回変換したいファイルはFTP先で作成される
ファイルでして、ファイル名もファイルの数も不明です。
拡張子だけは明確です。
その為、ダウンロードする前に存在するファイル名を
一旦変換(拡張子を変換)して、それらのファイルをダウンロードするという手順を考えました。
ダウンロード後、クライアント側で処理し、処理完了した後、先程変換したファイルを削除したい為です。
(ダウンロード後、処理完了して削除するまでの間に
新たにファイルが作成されるとダウンロードしていない
ファイルまで削除されてしまう可能性があると思い、
ファイル名の変換が必要と考えました。)
こういう経緯で困っています。
何か良い案はありますでしょうか?

補足日時:2006/02/20 11:24
    • good
    • 0

参考にならないかもしれませし、プログラミンができないと意味がないですが、...参考になればと書きました。



フリーのプログラミング言語で『なでしこ』とゆうのがあります。
http://nadesi.com/
トップペ-ジです。

http://nadesi.com/doc/index.htm
リファレンスの
機能順<>50音順を選び、
★命令の一覧(機能順)
ネットワーク(nakonet.dll)からFTPを選ぶと命令の一覧がでます。

拡張子変更

拡張子抽出

FTPファイル列挙

FTPコマンド送信

などの命令が使えると思います。
    • good
    • 0
この回答へのお礼

bob_nさん、レスありがとうございます。
早速こちらのサイトも眺めてみます。

皆様に色々と教えて頂いて本当に助かりました。
また、色々とアドバイスお願いします。

お礼日時:2006/02/20 15:08

ftp>ls *.txt LOCALFILENAME.txt


で、手元マシンのファイルにls結果を得ることが出来ます。
ftp>ls LOCALFILENAME.txt はだめですよ。
ftp>ls * LOCALFILENAME.txt のように、第二オペランドにローカルファイル名を指定します。

あと、
ftp>prompt
Interactive mode Off .
ftp>mget *.txt
でワイルドカードでまとめてget出来ます。
    • good
    • 0
この回答へのお礼

notnotさん、レスありがとうございます。
早速上記の動作を確認できました。
こんなこともできるのですね!勉強になります。
また教えて下さい。

お礼日時:2006/02/20 15:04

処理完了後、ダウンロードしたものと同じファイルを個別で削除指定してはいかがでしょう?


ループ処理になるので少々時間がかかることになりますが。
    • good
    • 0
この回答へのお礼

Kuppycatさん、レスありがとうございます。
一括でファイル名の変換ができないとなれば
1つずつ処理するしかないようですね。
もう少し教えてほしいのですが、
FTP先のファイル名の取得方法はあるのでしょうか?
(FTPコマンドで)
lsやDirを入力すれば一覧が表示されたりはしますが、
例えばバッチファイル化してそのようなことは可能でしょうか?
(ファイル(拡張子はtxt)を1つ適当でも構わないので選択して、それをダウンロードし、その後削除する)
UNIXコマンドというかその辺りに関しては
詳しくないので、アドバイス頂けたら嬉しいです。

お礼日時:2006/02/20 13:20

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QFTPコマンドでディレクトリごとファイル移動できるコマンドはありますか?

タイトルどおりなのですが、FTPでファイルを転送する際に、サブフォルダを含むディレクトリごとファイル転送するコマンドはありますでしょうか。
ディレクトリの中にあるすべてのファイルを移動したいのですが、サブフォルダがたくさんあるので、わざわざディレクトリの場所へ移動してmputを繰り返すのはめんどうで仕方ありません。
よろしくお願いします。

Aベストアンサー

ご使用になるOS環境が書いてないのですが、Linux,BSD等ならncftpで、get -R dir。
Windowsならffftpを使えば良いと思います。

Qftpのmgetコマンドの自分の格納場所の指定方法は?

先日、ftpコマンドについてこのサイトで色々教えていただき感謝しております。

複数のファイルを受信するのにmgetコマンドを教えていただいたのですが、
相手より受信した場所の格納場所の指定が上手くいきません。

先方にFTPとしてログインでき、"PROMPT"→"MGET *"と行うのですが、受信したファイルの格納場所がCドライブの直下になってしまいます。
自分のインターネットサービスマネージャーの
ルートは別のフォルダに設定してあるのですが、これは受信したデータの初期値にはならないのでしょうか?
また、調べたところ省略すると、ワーキングディレクトリに作成されるみたいにかかれていましたが、ワーキングディレクトリはどこかで指定できるのでしょうか?

たとえばC:\AAAに受信したファイルを格納したい場合はどうやって書けばよいでしょうか?

MGET * C:\AAA見たいに色々試して見ましたが、駄目でした。

Aベストアンサー

方法は2つあります。

(1)データを格納するディレクトリに移動してからftpを起動させる。

cd 格納先ディレクトリ
ftp ホスト名
mget *

(2)ftpした後格納するディレクトリを指定する方法

ftp ホスト名
lcd 格納先ディレクトリ(自分のマシン)
mget *


lcd とは、"Local Change Directory" と思っておくと忘れなくていいですよ♪

Qftp処理でmove(移動)を行いたい

バッチ処理でデータをftp受信しています。
---------------------------
ユーザ名
パスワード
prompt
mget abc*.log
mdelete abc*.log
bye
---------------------------
このようなコマンドを行っています。
ftpサーバにはさまざまなファイルが随時生成されます。

この処理では定期的に
abcで始まる全てのログファイルをgetし、
abcで始まる全てのログファイルをdeleteしています。

ところが、abcで始まるファイルの生成がランダムのため、
偶然mgetが終わった後でファイルが生成され、
mdeleteを行うと、getしていないファイルまで削除される恐れがあるのです。

そのため、一件ずつ移動を行いたいのですが、
調べてもmoveのようなコマンドがftpで見当たらないのですが
なにか、moveに置き換わるような処理はないでしょうか?

*windows同士の通信です。

Aベストアンサー

ftpはあくまでファイル転送プロトコルなのでmoveなどは無いです。
こんな感じでバッチファイルで。テストはしていません。

set HOST=ホスト名
set USER=ユーザ名
set PASS=パスワード
echo %USER%>tmp1
echo %PASS%>>tmp1
echo ls abc*.log tmp2>>tmp1
echo quit>>tmp1
ftp -s:tmp1 %HOST%
echo %USER%>tmp1
echo %PASS%>>tmp1
for /f %%F in (tmp2) do (echo get %%F&echo delete %%F)>>tmp1
echo quit>>tmp1
ftp -s:tmp1 %HOST%

別の方法として、Windowsホストのftpサーバーって使ったこと無いのでわかりませんが、もしかすると

ren abc*.log abc*.tmp
もしくは
quote site ren abc*.log abc*.tmp

が効けば、後は
prompt
mget abc*.tmp
mdelete abc*.tmp
受信後に、ren abc*.tmp abc*.log で名前を戻す。

ftpはあくまでファイル転送プロトコルなのでmoveなどは無いです。
こんな感じでバッチファイルで。テストはしていません。

set HOST=ホスト名
set USER=ユーザ名
set PASS=パスワード
echo %USER%>tmp1
echo %PASS%>>tmp1
echo ls abc*.log tmp2>>tmp1
echo quit>>tmp1
ftp -s:tmp1 %HOST%
echo %USER%>tmp1
echo %PASS%>>tmp1
for /f %%F in (tmp2) do (echo get %%F&echo delete %%F)>>tmp1
echo quit>>tmp1
ftp -s:tmp1 %HOST%

別の方法として、Windowsホストのftpサーバーって使ったこと無...続きを読む

QシェルスクリプトでFTPの実行結果を取得するには

OS redhat linux
シェル bornシェル

でftpを実行するスクリプトを作っていますが、
ftpの実行結果は取得できるのでしょうか?

ftp -n < ftpCom.txt

宜しくお願いします。

Aベストアンサー

No.1です。補足拝見しました。

直接ftpコマンドの戻り値では実行結果が判断できないので、私が以前に携わっていたプロジェクトでは、FTPサーバが出すエラーコードをgrepでハンドリングしていました。

FTPはコマンドの結果を「行頭に3桁の数字」で出力する仕様になっており、putもgetも送受信が成功した場合は226が出力されるので、

ftp -nv < ftpCom.txt > ftpLog.txt 2>&1

を例えにとると、このコマンドを実行した後に、
grep ^226 ftpLog.txt > /dev/null
if $? ne 0
then
echo "FTPでエラーが発生しました" >> logfile
exit 1
fi

みたいなことをしていました。grep の引数 ^226 は行頭が226から始まる行を検索、という意味で、grepでマッチする行があった場合は0が戻り値となり、マッチしなければ0以外が戻り値となるので、それを利用していました。

実際の運用では、処理が異常終了したときにlogfileを見て、FTPのエラーだったらさらにftpLog.txtを見る、みたいな感じでした。

なお、FTPサーバが返すコードについては下記RFCの4.2辺りを参照してください。もっとも、サーバによってこれら全てが実装されてるとは限りませんが。

http://hp.vector.co.jp/authors/VA002682/rfc959j.htm

No.1です。補足拝見しました。

直接ftpコマンドの戻り値では実行結果が判断できないので、私が以前に携わっていたプロジェクトでは、FTPサーバが出すエラーコードをgrepでハンドリングしていました。

FTPはコマンドの結果を「行頭に3桁の数字」で出力する仕様になっており、putもgetも送受信が成功した場合は226が出力されるので、

ftp -nv < ftpCom.txt > ftpLog.txt 2>&1

を例えにとると、このコマンドを実行した後に、
grep ^226 ftpLog.txt > /dev/null
if $? ne 0
then
echo "FTPでエラー...続きを読む

Qftpコマンドで複数のファイルを移動させたい

Solaris からftpコマンドを使用してwindosサーバに接続し、複数のファイルを./bak/フォルダにまとめて移動させたいのです。
renameを使えば、1つのファイルでなら可能ですが、複数は無理のようです。
rename test01.txt ./bak/test01.txt→OK
rename *.txt ./bak/*.txt    →NG

なんとかftpで複数ファイルの移動は出来ないのでしょうか?
1つずつ移動させるしかないのでしょうか?対象ファイルがたくさんあるので、それは避けたいのですが…。
ご教示願えればと思います。

Aベストアンサー

対象ファイルをzipで固めて、固めたzipファイルを送って解凍するとか。
普通のftpならmputとかmgetがあるけど。

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

Q「いずれか」と「いづれか」どっちが正しい!?

教えて下さいっ!
”どちらか”と言う意味の「いずれか」のかな表記として
「いずれか」と「いづれか」のどちらが正しいのでしょう???

私は「いずれか」だと思うんですが、辞書に「いずれか・いづ--。」と書いてあり、???になってしまいました。
どちらでもいいってことでしょうか?

Aベストアンサー

「いずれか」が正しいです.
「いづれ」は「いずれ」の歴史的かな遣いですので,昔は「いづれ」が使われていましたが,現代では「いずれ」で統一することになっていますので,「いずれ」が正しいです.

QDOSコマンドのダブルクォーテーションの扱い

DOSコマンドでダブルクォーテーションを検索し、
リダイレクションをすることが出来なくて困っています。
例えば
findstr "\"!" a.txt
は出来ますが
findstr "\"!" a.txt >b.txt
とするとリダイレクションが出来ません。
grepも同じようです。

またunixコマンドではシングルクオートは、「囲まれた中身をそのままの文字として利用」し、ダブルクオートは、「囲まれた中身に$HOME など $ で始まる文字列があれば、
それを環境変数、シェル変数といった、値に置き換えてから、利用する」という明確な違いがありますが、DOSコマンドでは明確な違いはあるのでしょうか?

unixのshellをDOSコマンドに移植しています。
DOSコマンドの参考Webもあまり見つからなくて困っています。
もし参考になりそうなWeb等ありましたら教えてください。

Aベストアンサー

"と'の違いですが、cmd.exe では ' 特殊文字ではありません。for /f 文のある形式で意味を持つだけでそれ以外の場所では#+-/などと同じ普通の文字です。unixのシェルとは全然違います。

まず質問文の
>findstr "\"!" a.txt >b.txt
ですが、\ はfindstrが正規表現の特殊文字として扱うだけでCMDの構文解析では普通文字なので、"\"が引用符に囲まれた文字列として扱われます。次の!は引用符の外の文字。次の " a.txt >b.txtが、(終りの引用符の欠けた)引用符に囲まれた文字列とみなされますので、リダイレクト記号は引用符の中となり効きません。

>OKだったもの
>findstr ^"\^"!^" a.txt
>findstr \^"! a.txt
^を前置した"は引用符としての意味を失い、そのまま"がfindstrにわたされます。リダイレクト記号をつけても引用符の中で無いので効きます。findstrは検索文字列が"で囲まれていればそれを外して、囲まれていなければそのままが使われますので、どちらでも同じ結果になります。

>以下待ちになるもの
>findstr ^"! a.txt
findstrに "! a.txt が渡るのでa.txtも検索文字列の一部とみなされます(閉じる"がfindstrによって補われる)。従って、標準入力から、! または a.txt という文字列を含む行を探していることになります。
リダイレクトをつけると引用符の外なので効きます。

>findstr "^"!" a.txt
引用符の中で^は"をエスケープしないので1個目と2個目の"がペアになり^を囲み、3個目はペアの欠けた引用符となり a.txtを囲みます。リダイレクトをつけても引用符の中なので効かないはず。
その後、findstrが文字列を囲む""を外すので、^!つまり行頭の!または a.txtを含む文字を標準入力から探すことになります。

>findstr ^"!^"^" a.txt
^が前置されているので"はCMD的には引用符でなくなりますのでリダイレクトは効きます。
findstr には "!"" a.txt が渡り、文字列を囲む""が外されて、!またはa.txtを含む文字列を標準入力から探す。

>findstr ^" a.txt
同様。

>コンソールには表示できるがリダイレクションでエラーになるもの
>findstr \"! a.txt >b.txt
cmd的には"は引用符なので>b.txtも(終りの欠けた)引用符の中なのでリダイレクトは効きません。
findstr にわたるのは \"! a.txt >b.txtで、検索文字列が "! で残りがファイル名とみなされますが、「a.txt >b.txt」という名前のファイルが無いのでエラー
リダイレクトをつけないで
>findstr \"! a.txt
だと、findstr には \"! a.txt が渡り、検索文字列が "! で、ファイル名がa.txtとなり目的通りになります。

>「"」を検索するには「\^」をつけるということでしょうか。
CMDに引用符とみなされないように^をつけて(この^はCMDが外してからfindstrに渡す)、findstrが"を外さないようにさらに\を前置する必要があるということです。

CMDがまず最初に^や"や>をどのように処理して、次にfindstrが渡された文字列をどう解釈するか段階を分けて考えればわかると思います。これはunixのシェルでも同じですが。
unixのシェルと比べるとCMDの"は変態的です。

"と'の違いですが、cmd.exe では ' 特殊文字ではありません。for /f 文のある形式で意味を持つだけでそれ以外の場所では#+-/などと同じ普通の文字です。unixのシェルとは全然違います。

まず質問文の
>findstr "\"!" a.txt >b.txt
ですが、\ はfindstrが正規表現の特殊文字として扱うだけでCMDの構文解析では普通文字なので、"\"が引用符に囲まれた文字列として扱われます。次の!は引用符の外の文字。次の " a.txt >b.txtが、(終りの引用符の欠けた)引用符に囲まれた文字列とみなされますので、リダイレクト...続きを読む

Qftpコマンドの戻り値をチェックしたい

現在業務でftpコマンドを用いたバックアップシェルを作成しております。(RHEL4)
クーロンでシェルAを呼び、シェルA内でftpコマンド発行→ファイルB内のftpコマンドを実行→シェルAに戻る、という仕様ですが、このftpコマンドが成功したのか失敗したのかをプログラム上で判断する方法はありますでしょうか?

Aベストアンサー

shogo0809さんの回答に便乗します。
実行ログをファイルに落としてgrepするのがよいと思います。
以前、似たような質問があったので
具体的な手順は参考URLのほうを見てはどうでしょうか?

→シェルスクリプトでFTPの実行結果を取得するには

参考URL:http://oshiete1.goo.ne.jp/qa2656080.html

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング