[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] PowerShell如何把两个文件交替合并?

最近工作中遇到很多文本处理的问题,所有想学习PowerShell实现自动化。

文件a.txt:
1
2
3

文件b.txt:
a
b
c

如何合并之后生成c.txt:
1
a
2
b
3
c

$内存数组 = Get-Content 'c:\文件a.txt'
$另一个内存数组 =  Get-Content 'c:\文件b.txt'
[array]$第三个内存数组 = $内存数组[0] + $另一个内存数组[0] + $内存数组[1] + $另一个内存数组[1]
等等
Out-File  -InputObject  $第三个内存数组  -FilePath c:\123.txt

数组下标可以是变量,如 $内存数组[$m] + $另一个内存数组[$n]
可以用 for,foreach 来循环 $内存数组[$m] + $另一个内存数组[$n]

能看明白么?
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

回复 2# PowerShell


公司服务器没有安装中文语言包,我改成了这个样子:
  1. $ArrayA = Get-Content 'a.txt'
  2. $ArrayB =  Get-Content 'b.txt'
  3. [array]$ArrayC = $ArrayA[0] + $ArrayB[0] + $ArrayA[1] + $ArrayB[1] + $ArrayA[2] + $ArrayB[2]
  4. Out-File  -InputObject  $ArrayC  -FilePath c.txt
复制代码
运行之后得到c.txt的内容都跑到一行去了:
1a2b3c
不是我需要的结果

TOP

$ArrayA = Get-Content 'a.txt'

$ArrayB =  Get-Content 'b.txt'

[array]$ArrayC += $ArrayA[0]
$ArrayC += $ArrayB[0]
$ArrayC += $ArrayA[1]
$ArrayC += $ArrayB[1]
$ArrayC += $ArrayA[2]
$ArrayC += $ArrayB[2]

Out-File  -InputObject  $ArrayC  -FilePath c.txt
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

回复 4# PowerShell


1、文件内容比较多的时候,比如成百上千行,循环语句怎么写呢?
2、两个文件的行数可能不相等,代码如何兼容这个情况呢?

TOP

可以用 for,foreach 来循环 $内存数组[$m] + $另一个内存数组[$n]
用for的话,数组下标从0到数组的length
$aaa[0..$aaa.length]

行数不想等的话,你想用什么逻辑规则来兼容呢?
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

回复 6# PowerShell


我尝试写了个for循环,但是得到的结果又跑到一行去了。如何修改呢?
  1. $ArrayA = Get-Content 'a.txt'
  2. $ArrayB =  Get-Content 'b.txt'
  3. [array]$ArrayC
  4. for ($i=0; $i -le $ArrayA.length; $i++)
  5. {
  6.     $ArrayC += $ArrayA[$i]
  7.     $ArrayC += $ArrayB[$i]
  8. }
  9. Out-File  -InputObject  $ArrayC  -FilePath c.txt
复制代码

TOP

初始化数组用
$ArrayC = @()
你试试灵不

手册--》主题     about_Arrays
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

返回列表