这两天碰到一个CRLF换行问题。
客户因为安全问题要把ftp换成sftp,这样的话,原来用ftp从文件系统下载文件的都要改成sftp,
干法就是用Putty的psftp.exe命令。
代码大概如下:
<ftpcommand.bat>
echo off
echo y |"C:\Program Files (x86)\PuTTY\psftp.exe" -pw PASSWORD -b "c:\exe\ftpcommand.ftp" user@ftpserver.com > "c:\exe\ftpcommand.log"
cd c:\exe
find <tmp_today.csv /V "" >today.csv
del tmp_today.csv
echo "BAT_END" > c:\exe\ftpsync.txt
exit
<ftpcommand.ftp>
cd /home/myuser/data/
lcd c:\exe
get today.csv tmp_today.csv
bye
本来是没有红色的三行的, 为什么加他呢?
就是因为文件系统上是Linux的LF换行符,可是到本地想要换成CRLF换行。
为什么想要呢,因为原来ftp传输的时候,自动就给把LF给变成了CRLF了,后边的程序也是这么用的。
现在换成sftp了,不自动变了,所以就得手动变。
现在说说为什么红色的三行就可以把LF给变成CRLF。
我猜是因为windows下运行的find命令,所以默认使用Windows换行吧。
找了半天,找到了一个贴讲这件是的,是个日文帖,想看的同学,勉强看吧。
http://ippanse.techblog.jp/archives/2238655.html