【问题标题】:Powershell Rename File to Original FilenamePowershell 将文件重命名为原始文件名
【发布时间】:2014-04-08 14:04:53
【问题描述】:

好的,我有一个脚本:

gc .\oauthrn.cms |
    % {
        $a=@();
        $b="";
        $a += $_.split('|'); 
        for ($i=0;$i -lt 168; $i++) 
        {
            $b += $a[$i] + '|'
        } 
        $b
    } |
    % {
        $_.TrimEnd("|")
    } |
    out-file "H:\Documentation\Scripts\Pipe Delimiter Project\ShineyNewFile.txt" -encoding ASCII

gc .\oauthrn1.cms |
    % {
        $a=@();
        $b="";
        $a += $_.split('|'); 
        for ($i=0;$i -lt 168; $i++) 
        {
            $b += $a[$i] + '|'
        } 
        $b
    } |
    % {
        $_.TrimEnd("|")
    } |
    out-file "H:\Documentation\Scripts\Pipe Delimiter Project\ShineyNewFile1.txt" -encoding ASCII

问题

所以基本上我想将文件重命名为原始名称,但是当我命名ShineyNewFileoauthrn 时,它不会在文件中输出任何内容。

我想这是因为它仍在查看该文件以在 out-file 语句期间输出...

有人对此有任何见解吗?我的假设正确吗?有没有办法处理这个保持我目前使用的语法?我是powershell 的新手,但它是一个很棒的工具。

【问题讨论】:

  • 您能描述一下您真正想要实现的目标吗?
  • "所以基本上我想将文件重命名为原始名称,但是当我将ShineyNewFile命名为oauthrn时,它不会在文件中输出任何内容。"
  • 是的,我们可以阅读,但它仍然没有意义。你可以Rename-item ShineyNewFile.txt oauthrn.cms

标签: windows powershell filenames powershell-3.0


【解决方案1】:

所以,我不确定为什么您在脚本中包含大部分内容,因为 TrimEnd 删除了您在我看到的最后一个问题中提出的所有额外管道字符,但无论如何,这是否符合您的要求?

gc .\oauthrn.cms |
    % {$_.TrimEnd("|")} |
    out-file "H:\Documentation\Scripts\Pipe Delimiter Project\ShineyNewFile.txt" -encoding ascii
Rename-Item "H:\Documentation\Scripts\Pipe Delimiter Project\ShineyNewFile.txt" "oauthrn.cms"

gc .\oauthrn1.cms |
    % {$_.TrimEnd("|")} |
    out-file "H:\Documentation\Scripts\Pipe Delimiter Project\ShineyNewFile1.txt" -encoding ascii
Rename-Item "H:\Documentation\Scripts\Pipe Delimiter Project\ShineyNewFile1.txt" "oauthrn1.cms"

【讨论】:

  • 您不确定什么?我基本上只是为另一个文件添加了第二次,这个过程必须对两个文件进行相同的操作。我不确定从每行末尾修剪最后一个管道与重命名文件有什么关系……是的,它完全符合我的要求。我想我主要不确定与函数相反的语法......再次感谢。
  • 我不确定的是整个$a$b 部分都拆分并手动重新加入。看起来你所做的只是修剪末端的管道,那条线就是这样做的。此外,整个For($i=0 部分都可以用$a[0..167] -join "|" 总结,但脚本确实不需要。
  • 我收到一个错误:Out-File: A Positional parameter cannot be found that accept argument 'Rename-item' @TheMadTechnician
  • 因为那应该是不同的行。 Rename-Item 是它自己的行,在 Out-File 行之后。不要放管道“|”在 Out-File 命令之后。
  • -Force 添加到最后一行以使其覆盖现有文件。抱歉,我不知道它在同一个文件夹中,我以为你正在输出到一个新文件夹。
猜你喜欢
  • 1970-01-01
  • 2021-03-13
  • 2021-02-04
  • 1970-01-01
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多