免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2077 | 回复: 5

[文本处理] 在字符串中如何拼接换行符? [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之同曦
日期:2017-03-19 09:57:50
发表于 2018-10-18 14:57 |显示全部楼层
意图是这样的: 准备自己写个ftp脚本获取特定的文件,因为get后面又无法接多个文件参数,如果把ftp写在循环里,感觉有点太频繁了,so,我准备这样实现
结合回车,先拼到一个变量里
for file in $@
do
        GET_FILE_CMD="\n${GET_FILE_CMD}\n get ${file}"
done


然后在ftp里一次性执行

ftp -n $IP << !
use $USER $PWD
bin
$GET_FILE_CMD
bye
!


然而执行的时候ftp报命令无效,换了下\n的位置,又报语句混淆,求指点一下,我的\n应该怎么拼

论坛徽章:
23
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-03 16:56:4615-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2018-06-15 14:59:3715-16赛季CBA联赛之青岛
日期:2018-06-08 13:45:28
发表于 2018-10-18 16:00 |显示全部楼层
本帖最后由 wh7211 于 2018-10-18 16:15 编辑

回复 1# 农民伯伯丶


因为get后面又无法接多个文件参数
  1. ftp -n $IP << !
  2. use $USER $PWD
  3. bin
  4. prompt off
  5. mget *.txt
  6. bye
  7. !
复制代码

论坛徽章:
0
发表于 2018-10-18 16:55 |显示全部楼层
======================================================================================
【安装】
win7 + ps5.0,及以上版本,无需这么麻烦。
管理员权限运行Install-Module winscp即可。
linux也是这样即可安装上。

如果你的系统是win7,默认自带powershell2.0,即如果没有安装powershell 5.0,就没有Install-Module命令。那么一切都要手动。
1去https://winscp.net/eng/downloads.php,手动下载【.NET assembly/COM library】
2解压后,得到"WinSCPnet.dll"
3在ps1脚本中,手动Add-Type -Path "d:\你的路径\WinSCPnet.dll"





【升级】
管理员权限运行 update-Module winscp


推荐使用。理由:
1支持ftp,sftp,webdav。
2无需先下载整个文件,winscp模块支持,从ftp服务器上,获取文件的校验码,从而得知是否文件是变化的。
有Get-WinSCPItemChecksum从而可以同步文件。
网页https://winscp.net/eng/docs/protocols的,Checksum calculation 章节,详细说明了这个内容。

3支持命令行显示ftp完成进度,文件权限,文件掩码,传输限速,是否覆盖。文件传输模式(ascii or 二进制)详见此命令:
New-WinSCPTransferOption


手册,所有例子在此:
https://winscp.net/eng/docs/library_examples


【测试通过的脚本例子】
  1. #----------------------------
  2. #用户输入部分
  3. $本地文件_路径 = 'd:\'
  4. $本地文件_文件名 = 'a1.txt'
  5. $本地文件_绝对路径名 = join-path -Path $本地文件_路径 -ChildPath $本地文件_文件名

  6. $远程路径 = '/UPLOAD/'
  7. $ftp服务器 = '192.168.1.1'
  8. $用户名 = 'a'
  9. $用户密码明文 = '传教士测试通过-2017-11'
  10. #----------------------------
  11. #脚本main
  12. $用户密码密文 = ConvertTo-SecureString $用户密码明文 -AsPlainText -Force
  13. $我的登陆凭据 = New-Object System.Management.Automation.PSCredential ($用户名,$用户密码密文)
  14. $ftp连接参数 = new-WinSCPSessionOption -Protocol Ftp -HostName $ftp服务器  -Credential  $我的登陆凭据
  15. $ftp连接 = new-WinSCPSession -SessionOption $ftp连接参数

  16. $传输参数_二进制 = New-WinSCPTransferOption -TransferMode Binary  
  17. Send-WinSCPItem -WinSCPSession $ftp连接 -LocalPath  $本地文件_绝对路径名  -RemotePath "$远程路径" -TransferOptions $传输参数_二进制
  18. #上传用 Send-WinSCPItem

  19. Receive-WinSCPItem -WinSCPSession $ftp连接 -RemotePath "$远程路径/a2.txt" -LocalPath "d:\j"
  20. #下载用 Receive-WinSCPItem



  21. Remove-WinSCPSession -WinSCPSession $ftp连接  #收工下班
复制代码

#--------------完--------------

【命令列表】
PS C:\Windows\system32> (get-command -module winscp).name
Close-WinSCPSession
Enter-WinSCPSession
Exit-WinSCPSession
Open-WinSCPSession
ConvertTo-WinSCPEscapedString
Get-WinSCPChildItem
Get-WinSCPItem
Get-WinSCPItemChecksum
Get-WinSCPSession
# 原创文章,2017-06第一版。2017-11第二版。
Get-WinSCPSshHostKeyFingerprint
Invoke-WinSCPCommand
Move-WinSCPItem
New-WinSCPItem
New-WinSCPItemPermission
New-WinSCPSession
New-WinSCPSessionOption
New-WinSCPTransferOption
New-WinSCPTransferResumeSupport
Receive-WinSCPItem
Remove-WinSCPItem
Remove-WinSCPSession
Rename-WinSCPItem
Send-WinSCPItem
Start-WinSCPConsole
Sync-WinSCPPath
Test-WinSCPPath


上面的英文都很好理解。
sync是同步

尽解一切win,linux,ftp,sftp,http(webdav)。文件传输。
自己dir 你的目录,然后foreach每个文件的绝对目录,即可。

论坛徽章:
1
15-16赛季CBA联赛之同曦
日期:2017-03-19 09:57:50
发表于 2018-10-18 20:54 |显示全部楼层
回复 2# wh7211

竟然可以,用了这么久的mget,一直以为后面只能写通配符和全名,没想到可以跟多个文件
不过。。。保持好奇心,如果不用mget,那个变量该咋拼

论坛徽章:
0
发表于 2018-10-19 10:50 |显示全部楼层
好贴,学习了

论坛徽章:
0
发表于 2018-10-19 13:54 |显示全部楼层
【简介】
https://winscp.net/eng/docs/lang:chs
winscp是一个免费软件。欢迎捐助作者。

我们使用的是它的库。这个库支持powershell,是win,linux通用的。

我们使用它的原因是,win,linux通用,健壮,免费。
没有暗坑,功能比系统自带的ftp,mput强很多。

你需要的功能,它都有。企业级的功能,企业级的稳定。
有它坐镇win,linux。尽解一切ftp,sftp,webdav(http,https)文件传输。
基本不需要其他软件。

   ---  我今天增补的内容。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP