3

我正在尝试在批处理文件中使用 wget 下载文件,如果文件全部存在并且它没有更改,我不想下载文件所以我-N 也在使用我正在从我的个人 FTP 服务器下载文件所以我想隐藏我的用户名密码详细信息,所以我决定使用>nul 2>&1 这样我的批处理文件来隐藏输出:

@echo off
blah blah
.....
echo please wait...
wget -N ftp://XXXXXXXXXX@YYYYYYY.com/file.jpg >nul 2>&1 

现在有两个问题:

  1. 窗口标题仍会显示我的用户名和密码,如何隐藏标题或更改标题?

  2. 用户不知道操作是成功(下载完成)还是失败(没有互联网或不存在文件)或者它没有下载,因为文件已经存在,我想知道我是否可以制作 3 IF STATEMENTS

    IF file was downloaded then echo file download
    
    IF file wasn't downloaded then echo error
    
    IF file wasn't downloaded because was the same then echo file didnt change
    
4

2 回答 2

2

Wget 有内置的开关,如果文件已经存在,将阻止下载。它有开关来做你想做的大部分事情,所以你根本不必把“if”语句放在批处理文件中。

wget 有一个广泛的开关列表。真的,它的开发人员已经想到了几乎所有事情。阅读那些文档,如果我记得它们大约有 150-200 页长。

于 2012-11-15T21:31:24.853 回答
1

我同意 PA 的观点,如果文件是敏感文件,那么在控制台输出中隐藏密码在安全性方面不会起多大作用。但是,要回答 OP 的问题:

1. title 命令可以改变当前窗口的标题。

title My CMD Window

如果您遇到的问题是 wget 命令的弹出窗口出现并在那里显示用户名和密码,您可以使用以下命令。抱歉,我不熟悉 wget 所以我不确定它的行为,希望这会有所帮助。

start "My WGET Window" wget -N ftp://XXXXXXXXXX@YYYYYYY.com/file.jpg >nul 2>&1

2. 之前和之后的几次检查将是有益的。首先,检查文件是否存在,如果它已经存在,甚至不要打扰 wget(假设从你的帖子的措辞中你不想覆盖文件)。

if exist file.jpg echo File already exists!&pause&goto :EOF
:: run wget here
if exist file.jpg (echo File download successful.) else (echo File download UNSUCCESSFUL.)

我们不需要检查所有三个条件,因为文件要么事先存在(在这种情况下批处理退出),要么在这种情况下我们测试是否成功下载。请注意,很难检查部分文件。

所以,把它们放在一起:

@echo off
blah blah
.....
title My CMD Window
if exist file.jpg echo File already exists!&pause&goto :EOF
echo please wait...
start "My WGET Window" wget -N ftp://XXXXXXXXXX@YYYYYYY.com/file.jpg >nul 2>&1
if exist file.jpg (echo File download successful.) else (echo File download UNSUCCESSFUL.)
于 2012-10-23T19:43:05.950 回答