如果文件存在只是更改文件名

时间:2015-09-17 13:15:35

标签: powershell-v4.0

我错过了这里显而易见的,还是我编码不正确?我只想在处理语法时检查文件是否存在,如果存在,则保存在完全相同的位置,但附加单词" _RoundTwo"到第二个文件的末尾。我的语法没有错误,但永远不会创建第二个文件。有人可以指出我的错误吗?

import inspect
try:
    # For modules that define __all__, we want all exported classes
    # even if they weren't originally defined in the module
    todefine = filter(inspect.isclass, (getattr(somemodule, name) for name in somemodule.__all__))
except AttributeError:
    # If __all__ not defined, heuristic approach; exclude private names
    # defined with leading underscore, and objects that were imported from
    # other modules (so if the module does from itertools import chain,
    # we don't wrap chain)
    todefine = (obj for name, obj in vars(somemodule).items() if not name.startswith('_') and inspect.isclass(obj) and inspect.getmodule(obj) is somemodule)

1 个答案:

答案 0 :(得分:2)

[IO.Path]::GetFileNameWithoutExtension

该方法不会创建文件,它只返回一个包含文件名的字符串,其扩展名被剥离。

如果你想复制文件,那么你需要复制,但是有一种更简单的方法就是利用一个没有任何对象的管道而不做任何事情:

dir $SaveLocation\$WorkbookName + ".csv" |
  foreach-object {
    $dest = $_.DirectoryName +
         '\' + 
         [io.path]::GetFileNameWithoutExtension($_.FullName) +
         $_.Extension
    copy-item $_ $dest
  }

如果dir与文件不匹配,则管道上没有foreach-object处理的对象。管道变量$_还包含大量要重用的信息(查看dir afile | format-list *的结果)。