小议Test-Path参数IsVaild的使用限制

原创 2007年09月25日 17:57:00

作者: Edengundam(马涛)

之前, 我曾经翻译过一个cmdlet命令: Test-Path, 这个命令用于确定路径的所有元素是否存在。今天, 我们主要查看一下该命令的参数IsValid.
首先, 我们先看下这个参数的描述:

-isValid <SwitchParameter>
    确定路径的语法是否正确(不管路径的元素是否存在)。如果路径语法有效,则返回 True;如果其无效,则返回 False。

注意这里<SwitchParameter>意味着此参数不需要指定任何参数值(argument). 先让我们看几个例子:

PS C:Scripts>   Test-Path c: -isValid  # 我们期待这是个正确的目录
True

PS C
:Scripts>   Test-Path c:]] -isValid  #这也是个正确的目录
True

PS C
:Scripts>   Test-Path c:/ -isValid  #这个正确嘛?有疑问??
True

PS C
:Scripts>   Test-Path / -isValid   #这个呢?看起来不像正确的.
False

PS C
:Scripts>   Test-Path z/ -isValid  #这个肯定错了吧!
True

PS C
:Scripts>   Test-Path z/// -isValid  #这个鬼东西...错了!
True

PS C
:Scripts>   Test-Path a-isValid   #看起来挺对的
True

怎么样, 这些结果是不是让你觉得很郁闷, 明明有些路径根本就是非法的, 为什么还会返回正确的结果呢??这是由于Test-Path只是简单的查看路径名中是否存在非法的字符. 请看下面的例子:

PS C:> Test-Path z/ -isValid -PathType Leaf
True
PS C
:> Test-Path z/ -isValid -PathType container
True
PS C
:scripts> New-Item z/ -ItemType container


    目录
: Microsoft.PowerShell.CoreFileSystem::C:scripts


Mode                LastWriteTime     
Length Name
----                -------------     ------ ----
d
----         2007-9-25     17:49            z

经过确认'z///'是合法路径后, 我们调用New-Item创建目录'z///', 结果只创建了目录'z'. 也许这是此命令的一个缺陷, 希望PowerShell的下个版本能让它按照我们期待的运行.
不过我个人觉得, 其实不管如何, 我们直接去尝试创建目录即可, 然后只需要使用trap捕获异常事件即可. 最后, 附赠一个小脚本, 可以输出ASCII码0-127中, 哪些字符禁止出现在路径中.

PS C:scripts> 32..127 | ?!(Test-Path -Path "$([char]$_)" -IsValid) } | %{ [char]$_ }
"
*
:
<
>
?
|

这里我省略了0-31的字符, 有兴趣的朋友可以自己试试^^
 

Test-Path 帮助信息

如下说明是翻译: help Test-Path 产生的帮助信息. 译者: Edengundam(马涛) Test-Path 大纲确定路径中所有元素是否都存在. 语法Test-Path [-path] ...
  • PowerShell
  • PowerShell
  • 2007年08月27日 20:38
  • 1748

小议Java类的设计

    “类只做自己的事儿,一个方法只做一件事儿。”    项目中经常发现一些人很随便的就新建一个类,很随便的就添加一个方法,从不考虑类本身是干啥的。最终的结果就是一个类想干啥就干啥,它的方法想干多少...
  • wuahui
  • wuahui
  • 2007年12月31日 01:08
  • 163

抖动算法小议2

这里检讨一下,自己虽然是个搞C/C++的,为了偷懒,先用Matlab解决问题……这里是Matlab的Bayer抖动的算法,用于将256级别的灰度图像抖动成同样尺寸的黑白图片。clear;clc;m1 ...
  • coolbacon
  • coolbacon
  • 2009年04月01日 22:04
  • 5600

URL传递参数长度限制

IIS 7 对 Query String 有长度限制;默认:2048 1. IE浏览器对URL的长度现限制为2048字节(自己测试最多为2047字节)。 2. 360极速浏览器对URL...
  • voodooer
  • voodooer
  • 2015年12月01日 09:37
  • 5751

抖动算法小议3

如果将24Bit的真彩色图片转换为更低量化级别的图片的时候,其实还是使用Floyd-Steinberg算法,但是直接使用这个算法,效果并不好。原因在于,当颜色特别丰富的图片转换成低彩色的时候,即使用了...
  • coolbacon
  • coolbacon
  • 2009年04月01日 22:34
  • 6432

http get 方式参数的长度限制

http get 方式参数的长度限制
  • xiaokui_wingfly
  • xiaokui_wingfly
  • 2015年01月05日 17:06
  • 4638

解除springmvc限制参数对象映射个数不能超过256个

springmvc默认只支持256个对象映射,加入以下代码即可解决:   @InitBinder public void initListBinder(WebDataBinder bind...
  • bian1729183741
  • bian1729183741
  • 2016年07月21日 10:03
  • 704

Java 使用 enum 限制参数的有限状态

package com.text.com; import com.text.main.TestMain; /** * 在一个类中,封装一个枚举类,并将该枚举声明为public * 当需要在一个...
  • TQW4321
  • TQW4321
  • 2014年04月18日 09:01
  • 2830

关于HTTP的GET请求参数长度限制问题和我对中国式教育的吐槽

隐隐约约记得,http的get请求的参数长度是有限制的,所以当从客户端向服务端发送数据时,如果数据量太大,那么就不要用get方法,而要用post方法。         我相信,很多人同我一样,对这个问...
  • KWSY2008
  • KWSY2008
  • 2015年09月11日 15:52
  • 3171

资源限制参数+查看资源限制参数

session_per_user:用户所允许最大同时连接的会话数量,超过时,用户登录就报错 cpu_per_session:限制用户一次数据库会话期间可以使用的CPU时间,单位为百分之一秒,超过时间...
  • zhou920786312
  • zhou920786312
  • 2017年05月25日 16:02
  • 228
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:小议Test-Path参数IsVaild的使用限制
举报原因:
原因补充:

(最多只允许输入30个字)