如题,具体命令是;
dir -Recurse -file -Filter *.jpg | select fullname | Out-File -Width 500 1.txt
主要是把当前目录下所有.jpg文件和路径导出到1.txt中,结果在1.txt中,超过80个字符的被截了,此处Out-File命令的Width似乎没有生效。这是为什么呢?
OS 名称: Microsoft Windows 10 企业版
OS 版本: 10.0.10240 暂缺 Build 10240
PSVersion 5.0.10240.16384
那个宽度受控制台影响的,跟width没关系。你可以这样改:
dir -Recurse -file -Filter *.jpg | ForEach-Object {
$_.FullName | Out-File 1.txt -Append
}
多谢,使用上述使用确实可以达到目的。宽度是怎么受控制台影响的呢?能否详述或者提供相关链接?是否可以在控制台级别消除这个影响,而不改变我提供的命令呢?另外,您提供的这个命令我执行时有41000个文件,用时要比我那个命令长很多,大概长五分钟吧,还有更具效率的命令吗?
select object 是将对象从管道重定向到控制台输出,接着out-file会将控制台输出重定向到文件。在select object重定向控制台输出的过程中,会受当前控制台缓冲区的影响,字符串会被截断。
另外一个原因是select object 默认会以表格输出,试想一下,select p1,p2,p3,表格输出不截断,简直要逆天了。但是如果你一定像用select-object,并且确定了只关注fullname,那还有一招:讲你自己脚本中的select fullname 改成select -ExpandProperty FullName,这样就不用制表输出了,自然也不需要截断了。你可以比较一下性能。