0

C您可以%username%用作variable当前用户名的目录列表等:c:\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 回答