【问题标题】:Using %USERNAME% environment variable in Windows batch file with command-line ftp在带有命令行 ftp 的 Windows 批处理文件中使用 %USERNAME% 环境变量
【发布时间】:2017-12-29 01:55:37
【问题描述】:
ftp
open ftp.drivehq.com 
username
password
cd  \wwwhome\Logs\
put "C:\Users\Cody\Desktop\ISO's\mini.iso"
bye
exit

当与ftp 一起使用时,如何使用%USERNAME% 而不是硬编码Cody

【问题讨论】:

  • 您是如何生成和存储这些 FTP 命令的?如果您只是将它们硬编码在文本文件中,是的,它不会起作用; FTP不是批处理。如果您将批处理脚本写入echo 将所有内容写入文本文件,它将起作用。
  • 我发错了,这是硬编码版本,我确实有一个批处理脚本来回显所有保存的内容。
  • 我想我会很想使用CD .\wwwhome\LogsCD wwwhome\Logs 而不是cd \wwwhome\Logs\ 。我什至可能会进一步考虑将 /D 选项与CD 结合使用。
  • 请问为什么?努力学习

标签: batch-file ftp


【解决方案1】:

这是另一个批处理文件解决方案,其代码类似于 Martin Prikryl 编写的代码,但具有三个增强功能。

  1. %USERPROFILE% 用于代替 C:\Users\%username%,这使得此批处理文件解决方案也适用于 Windows XP 以及用户配置文件目录不在驱动器 C: 或与 @ 不同的目录的计算机上987654325@当然也可以。

  2. %SystemRoot%\System32\ftp.exe 在批处理文件中使用,而不仅仅是 ftp,如果偶然有一个文件扩展名列在环境变量 PATHEXT 中的 ftp.* 文件,也可以使该批处理文件工作当前目录或环境变量 PATH 中的任何其他目录,而不是 Windows 系统目录中的 ftp 可执行文件。

  3. 在上传前重命名 ISO 文件名,其中包含一个 0 到 32767 之间的随机十进制数,根据评论的要求。

增强型批处理文件的命令行:

:RandomIsoName
set "RandomName=mini_%RANDOM%.iso"
if exist "%USERPROFILE%\Desktop\ISO's\%RandomName%" goto RandomIsoName
ren "%USERPROFILE%\Desktop\ISO's\mini.iso" "%RandomName%"

(
echo open hostname
echo username
echo password
echo cd \wwwhome\Logs\
echo put "%USERPROFILE%\Desktop\ISO's\%RandomName%"
echo bye
)>ftp.txt
%SystemRoot%\System32\ftp.exe -s:ftp.txt

【讨论】:

  • 另外,在上传之后或之前是否可以将文件重命名为%random%
【解决方案2】:

您必须使用该变量生成ftp 脚本:

echo open hostname>ftp.txt
echo username>>ftp.txt
echo password>>ftp.txt
echo cd  \wwwhome\Logs\>>ftp.txt
echo put "C:\Users\%username%\Desktop\ISO's\mini.iso">>ftp.txt
echo bye>>ftp.txt
ftp -s:ftp.txt

【讨论】:

  • @MartinPrikryl 我没有测试脚本就接受了你的回答。出于某种原因,它只是不断重复覆盖 ftp.txt 文件,并且从不执​​行 ftp -s:ftp.txt
  • 我猜你将批处理文件命名为ftp.bat。所以最后一行重新执行批处理文件本身而不是ftp.exe
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2011-09-10
  • 2012-01-26
  • 1970-01-01
相关资源
最近更新 更多