我有3个文本文件,每个文件都有一个大约250 * .Png网址列表(每行一个网址),它们位于 不同的SubDirectory(所以我可以将每个列表下载到自己的文件夹中)。
我为整个过程制作了这个批处理命令: -
For /R %%F in ("*.txt") do wget -i "%%F"
但我不知道为什么它会给我这样的输出: -
http://website.com/images/file1.png%0dhttp://website.com/images/file2.png%0dhttp://website.com/images/file3.png%0d....http://website.com/images/file250.png
我试图只在每个文本文件中保留一个URL并删除其余文件,然后我开始批处理。
这次它有效,但有一点虫子!所有三个* .Png文件都已下载, 进入主目录,而不是我计划的子目录。
那么,我应该做些什么来解决这个问题,
我只需要在其自己的目录中下载每个文本列表。
任何帮助请..
答案 0 :(得分:0)
这看起来像编码问题。
你没有说你在哪里有wget.exe(它不附带Windows),但我想这是UNIX实用程序之一。 UNIX仅对换行使用LF(%0a)。从上面的输出,您的文件使用裸CR(%0d)或Windows CRLF(%0d%0a),并且wget没有将它们识别为换行符。
要说明区别,请尝试在notepad.exe中打开该文件。如果它看起来很正常,那就是CRLF(你的wget就是无法处理Windows风格的txt文件)。如果这些线都被挤压在一起,它就是一个裸CR,而生成你文本文件的任何东西都做错了。
无论哪种方式,编码问题的解决方案是将文本文件放入wget可以理解的格式。理想情况下,您应该修复生成文本文件的任何内容。如果没有,您需要在使用前转换文本文件。例如,使用.NET框架的编码支持(通过Powershell,在Vista及更高版本上)
powershell -ex unrestricted -command "get-content foo.txt | set-content foo1.txt -Encoding UTF8"
另一个选择是更改wget以处理可以处理不同编码的内容。 Powershell的Invoke-Webrequest可以在这里提供帮助(它甚至可以别名为'wget')
powershell -ex unrestricted -command "Invoke-WebRequest -Uri '%uri%' -OutFile '%localfilename%'"
答案 1 :(得分:0)
非常感谢您的回复, 你的期望是完全正确的,这就是我做的,
首先,请允许我提醒您,我有两个问题: -
我有两个解决方案: -
答: - 使用NotePad ++
B: - 使用GNUWin32工具" Dos2Unix"命令: -
For /R %%a in ("*.txt") do "Dos2Unix" -c mac %%a
注1:此命令将转换当前目录和子目录中的所有* .txt文件,从" Mac !!!"转换为" Unix"行尾。
Note.2我知道,作为Windows用户,我应该使用 -c ascii 而不是 -c Mac , 为了转换为" Dos"到" Unix"线路结尾,但我不知道为什么它对我不起作用,并且" -c Mac"做了!!!
这一个,我为它做了一个替代解决方案,
通过修改批处理命令,使用 WGet 切换 -p : -
For /R %%F in ("*.txt") do wget -p -i "%%F"
请注意。 -p 开关,用于在自己的目录中下载文件, 根据他们在网站上的位置。 因此,如果您有2个网址列表。他们的地址是:
http://website.com/images_png/file(n).png
http://website.com/images_jpg/file(n).jpg
然后,下载位置将是: -
X:\ WorkingDirectory \网站\ images_png \
X:\ WorkingDirectory \网站\ images_jpg \
再次感谢 Ryan 的帮助,我非常感谢你