你好,我正在尝试将文件上传到 FTP 帐户,但遇到一个问题,我想将所有文件路径附加到上传文件这是我的ftpupload.txt
内容:
ftpusername
ftpPassword
cd htdocs
quote pasv
binary
O : \ p i c s
O : \ 1 5 1 1 0 4 0 5 1 5 3 3 I M G _ 2 0 1 5 1 1 0 3 _ 1 1 1 2 2 9 . j p g
O : \ 1 5 1 1 0 4 0 5 1 5 4 8 I M G _ 2 0 1 5 1 1 0 3 _ 1 1 2 0 1 5 . j p g
O : \ 1 5 1 1 0 4 0 5 1 5 5 8 I M G _ 2 0 1 5 1 1 0 3 _ 1 2 3 2 3 4 . j p g
O : \ 1 5 1 1 0 4 0 5 1 6 1 0 I M G _ 2 0 1 5 1 1 0 3 _ 1 2 3 2 4 9 . j p g
O : \ 1 5 1 1 0 4 0 5 1 6 4 0 I M G _ 2 0 1 5 1 1 0 3 _ 1 2 3 9 2 4 . j p g
O : \ 1 5 1 1 0 4 0 5 1 6 5 8 I M G _ 2 0 1 5 1 1 0 3 _ 1 3 0 7 4 1 . j p g
O : \ 1 5 1 1 0 4 0 5 1 7 1 2 I M G _ 2 0 1 5 1 1 0 3 _ 1 3 0 7 5 6 . j p g
O : \ 1 5 1 1 0 4 0 5 1 7 2 1 I M G _ 2 0 1 5 1 1 0 3 _ 1.jpg
电源外壳命令列出路径:
gci o: -r | % {$_.FullName} >>C:\Users\vb3\desktop\ftp\ftpupload.txt
我想要像这样的文本文件输出我该如何解决这个问题,我是 powershell 新手,所以告诉我解决这个问题的简单方法
ftpusername
ftpPassword
cd htdocs
quote pasv
binary
send O:\151104051533IMG_20151103_111229.jpg
send O:\151104051548IMG_20151103_112015.jpg
send O:\151104051558IMG_20151103_123234.jpg
send O:\151104051610IMG_20151103_123249.jpg
答案1
这通常是一个编码问题。
因此,请注意,在 PowerShellv7 中,所有 cmdlet 以及重定向运算符都使用 UTF8 文本。
但是,Windows PowerShell 中并非所有东西都可以,但有 -Encoding。您可以通过输入以下内容将 UTF8(或其他编码)设置为默认值:
$PSDefaultParameterValues.Add('*:Encoding', 'UTF8')
...在您的用户配置文件和所有分布式/生产脚本中。
您也可以直接删除空格。逐步操作以获得最终解决方案。
# Use your output directly or assign it to a variable use the below
(@'
ftpusername
ftpPassword
cd htdocs
quote pasv
binary
O : \ p i c s
O : \ 1 5 1 1 0 4 0 5 1 5 3 3 I M G _ 2 0 1 5 1 1 0 3 _ 1 1 1 2 2 9 . j p g
O : \ 1 5 1 1 0 4 0 5 1 5 4 8 I M G _ 2 0 1 5 1 1 0 3 _ 1 1 2 0 1 5 . j p g
O : \ 1 5 1 1 0 4 0 5 1 5 5 8 I M G _ 2 0 1 5 1 1 0 3 _ 1 2 3 2 3 4 . j p g
O : \ 1 5 1 1 0 4 0 5 1 6 1 0 I M G _ 2 0 1 5 1 1 0 3 _ 1 2 3 2 4 9 . j p g
O : \ 1 5 1 1 0 4 0 5 1 6 4 0 I M G _ 2 0 1 5 1 1 0 3 _ 1 2 3 9 2 4 . j p g
O : \ 1 5 1 1 0 4 0 5 1 6 5 8 I M G _ 2 0 1 5 1 1 0 3 _ 1 3 0 7 4 1 . j p g
O : \ 1 5 1 1 0 4 0 5 1 7 1 2 I M G _ 2 0 1 5 1 1 0 3 _ 1 3 0 7 5 6 . j p g
O : \ 1 5 1 1 0 4 0 5 1 7 2 1 I M G _ 2 0 1 5 1 1 0 3 _ 1.jpg
'@).Split("`r`n",[System.StringSplitOptions]::RemoveEmptyEntries) -replace '\s{2}' |
ForEach {
If ($PSItem -match 'O :')
{$PSItem -replace '\s+'}
Else {$PSItem}
}
# Results
<#
ftpusername
ftpPassword
cd htdocs
quote pasv
binary
O:\pics
O:\151104051533IMG_20151103_111229.jpg
O:\151104051548IMG_20151103_112015.jpg
O:\151104051558IMG_20151103_123234.jpg
O:\151104051610IMG_20151103_123249.jpg
O:\151104051640IMG_20151103_123924.jpg
O:\151104051658IMG_20151103_130741.jpg
O:\151104051712IMG_20151103_130756.jpg
O:\151104051721IMG_20151103_1.jpg
#>
# Pseudo file create... and modify
@'
ftpusername
ftpPassword
cd htdocs
quote pasv
binary
O : \ p i c s
O : \ 1 5 1 1 0 4 0 5 1 5 3 3 I M G _ 2 0 1 5 1 1 0 3 _ 1 1 1 2 2 9 . j p g
O : \ 1 5 1 1 0 4 0 5 1 5 4 8 I M G _ 2 0 1 5 1 1 0 3 _ 1 1 2 0 1 5 . j p g
O : \ 1 5 1 1 0 4 0 5 1 5 5 8 I M G _ 2 0 1 5 1 1 0 3 _ 1 2 3 2 3 4 . j p g
O : \ 1 5 1 1 0 4 0 5 1 6 1 0 I M G _ 2 0 1 5 1 1 0 3 _ 1 2 3 2 4 9 . j p g
O : \ 1 5 1 1 0 4 0 5 1 6 4 0 I M G _ 2 0 1 5 1 1 0 3 _ 1 2 3 9 2 4 . j p g
O : \ 1 5 1 1 0 4 0 5 1 6 5 8 I M G _ 2 0 1 5 1 1 0 3 _ 1 3 0 7 4 1 . j p g
O : \ 1 5 1 1 0 4 0 5 1 7 1 2 I M G _ 2 0 1 5 1 1 0 3 _ 1 3 0 7 5 6 . j p g
O : \ 1 5 1 1 0 4 0 5 1 7 2 1 I M G _ 2 0 1 5 1 1 0 3 _ 1.jpg
'@ |
Out-File -LiteralPath 'D:\Temp\ftpUpload.txt'
Get-Content -Path 'D:\Temp\ftpUpload.txt'
# Results
<#
ftpusername
ftpPassword
cd htdocs
quote pasv
binary
O : \ p i c s
O : \ 1 5 1 1 0 4 0 5 1 5 3 3 I M G _ 2 0 1 5 1 1 0 3 _ 1 1 1 2 2 9 . j p g
O : \ 1 5 1 1 0 4 0 5 1 5 4 8 I M G _ 2 0 1 5 1 1 0 3 _ 1 1 2 0 1 5 . j p g
O : \ 1 5 1 1 0 4 0 5 1 5 5 8 I M G _ 2 0 1 5 1 1 0 3 _ 1 2 3 2 3 4 . j p g
O : \ 1 5 1 1 0 4 0 5 1 6 1 0 I M G _ 2 0 1 5 1 1 0 3 _ 1 2 3 2 4 9 . j p g
O : \ 1 5 1 1 0 4 0 5 1 6 4 0 I M G _ 2 0 1 5 1 1 0 3 _ 1 2 3 9 2 4 . j p g
O : \ 1 5 1 1 0 4 0 5 1 6 5 8 I M G _ 2 0 1 5 1 1 0 3 _ 1 3 0 7 4 1 . j p g
O : \ 1 5 1 1 0 4 0 5 1 7 1 2 I M G _ 2 0 1 5 1 1 0 3 _ 1 3 0 7 5 6 . j p g
O : \ 1 5 1 1 0 4 0 5 1 7 2 1 I M G _ 2 0 1 5 1 1 0 3 _ 1.jpg
#>
# Read the file back
ForEach ($Line in (
(Get-Content -Path 'D:\Temp\ftpUpload.txt').Split("`r`n",
[System.StringSplitOptions]::RemoveEmptyEntries) -replace '\s{2}')
)
{If ($LIne -match 'O :')
{$Line -replace '\s+'}
Else {$Line}}
# Results
<#
ftpusername
ftpPassword
cd htdocs
quote pasv
binary
O:\pics
O:\151104051533IMG_20151103_111229.jpg
O:\151104051548IMG_20151103_112015.jpg
O:\151104051558IMG_20151103_123234.jpg
O:\151104051610IMG_20151103_123249.jpg
O:\151104051640IMG_20151103_123924.jpg
O:\151104051658IMG_20151103_130741.jpg
O:\151104051712IMG_20151103_130756.jpg
O:\151104051721IMG_20151103_1.jpg
#>
# Modify the raw file
$CleanedContent = ForEach (
$Line in (
(Get-Content -Path 'D:\Temp\ftpUpload.txt').Split(
"`r`n",[System.StringSplitOptions]::
RemoveEmptyEntries
) -replace '\s{2}'
)
)
{
If ($LIne -match 'O :')
{$Line -replace '\s+'}
Else {$Line}
}
Set-Content -Path 'D:\Temp\ftpUpload.txt' -Value $CleanedContent
# Read the file back
Get-Content -Path 'D:\Temp\ftpUpload.txt'
# Results
<#
ftpusername
ftpPassword
cd htdocs
quote pasv
binary
O:\pics
O:\151104051533IMG_20151103_111229.jpg
O:\151104051548IMG_20151103_112015.jpg
O:\151104051558IMG_20151103_123234.jpg
O:\151104051610IMG_20151103_123249.jpg
O:\151104051640IMG_20151103_123924.jpg
O:\151104051658IMG_20151103_130741.jpg
O:\151104051712IMG_20151103_130756.jpg
O:\151104051721IMG_20151103_1.jpg
#>