0

で、ディレクトリリストなどの現在のユーザー名のとしてC使用できます。%username%variablec:\documents and settings\%username%\

バッチスクリプトにこのようなものはありますか?使用するだけで%username%は役に立たないようです。

FTPサーバーにアクセスするスクリプトを作成して、サーバーにファイルをロードできるようにしました。友達にこのスクリプトを使用してもらいたいのですが、いくつかの異なるスクリプトを作成する必要はありません。これが私がこれまでに持っているものです:

@echo off
@ftp -s:"%~f0" &GOTO: EOF
open FTP.server.com
user
pass
cd /home/ftp
bin
lcd "c:\documents and settings\%username%\my documents\FTP"
mput *txt
pause
bye

方法が必要です

4

3 に答える 3

1

これは、バッチ ファイルが実行されるたびにスクリプト ファイルが作成されるようにバッチ ファイルを変更すると実行できます。これを行うには、コマンドを使用しechoてスクリプト行をスクリプト ファイルに書き込み、それをftpコマンドに渡すことができます。これが機能する理由はecho、スクリプト ファイルに書き込む前に %username% 変数を展開するためです。

@echo off
del script.txt
echo open FTP.server.com>>script.txt
.
[echo rest of script lines to file]
.
echo lcd "c:\documents and settings\%username%\my documents\FTP">>script.txt
echo echo mput *txt>>script.txt

@ftp -s:script.txt
于 2010-08-01T20:18:31.200 に答える
0

を使用する代わりにlcd、外部バッチファイルの作業ディレクトリを変更することをお勧めします。

@echo off

@pushd "c:\documents and settings\%username%\my documents\FTP"

@ftp -s:"%~f0" &GOTO: EOF

open FTP.server.com
user
pass
cd /home/ftp
bin
mput *txt

@pause

このソリューションの唯一の問題は、スクリプト自体が作業ディレクトリに存在しないため、そのためのパスを追加する必要があることです。(または、FTPフォルダーに入れます;)

また、マイナーな衒学者ですが、これは実際には私のドキュメントを見つける正しい方法ではありません。特に、VistaまたはWindows 7では、ユーザープロファイルはに保存されC:\Usersます。また、ユーザーがマイドキュメントを移動することもできます(私のコンピューターでは、マイドキュメントはにありますD:\Mike's Documents

ただし、マイドキュメントを直接指す環境変数はないように見えるため、次のようにする必要があります。

"%userprofile%\my documents\FTP"

このスクリプトを実行しているユーザーがXPを実行していて、マイドキュメントを移動していない場合、これは実際には問題ではありません。

于 2010-07-29T05:57:37.220 に答える
0

もう少しコードが長くなりますが、より良い方法を見つけたと思います。

set "rootdir=%userprofile%\my documents"

set "destdir=c:\
for /f "delims=" %%a in ('dir /b /s "%rootdir%*.txt"') do copy "%%~a" "%destdir%"

そして、以下を含む通常のFTP関連lcd c:\

私はこれをテストしましたが、もっと簡単な方法を見つけたいと思っています。xcopy を使用してみましたが、何らかの理由でシステムで動作せず、cmd 画面がハングします。も使用してみcopyましたが、「ファイルが見つかりません」というエラーが発生しました。

于 2010-07-29T07:36:31.327 に答える