我想在powershell中编写脚本来批量转换视频文件。Powershell中的测试路径行为
我打算使用它的方式是去一些文件夹充满视频文件并运行它。它使用可以在“命令行模式”(命名为手刹)中运行的转换程序,并在文件扩展名之前将转换后的文件与“-android”附加在一起。例如,如果我在文件夹中有一个名为video1.avi的文件,在运行脚本之后,该文件夹有2个文件:video1.avi和video1-android.avi
我想这样做的原因是这样的我可以检查每个视频文件是否存在转换后的版本(将名称附加-android)。如果是这样,跳过该文件的转换。
而这正是我要加倍努力的地方。问题是Test-Path的行为(我用来测试文件是否存在的cmdlet)。
会发生什么情况是,如果视频文件有一个“不寻常的”名称(例如在我的情况下,它的视频[长] .avi)如果您尝试检查该文件是否存在,Test-Path将始终返回False。
为您测试这样的一个简单的方法是,例如该做的事:
转到一个空文件夹, 运行记事本创建一个文件“[”在它的名字:
¬epad test[x].txt
保存文件
然后做到这一点:
Get-ChildItem | ForEach-Object {Test-Path $_.FullName}
它确实不是真的!它应该是对的?那么它不会如果该文件的名称中有[[“(我没有检查任何其他特殊字符)
我意识到,如果你逃脱”[“和”]“它的作品
Test-Path 'test`[x`].txt'
返回true。
我该如何解决这个问题?我希望能够:给定文件的BaseName,将其附加到“-android.avi”并检查是否存在具有该名称的文件。
感谢, 瑞
谢谢,那正是我所需要的 – Rui 2009-11-25 23:12:29