用搜索变量替换路径名的一部分?


0

我不确定我是否在问题中使用了正确的表达方式,但上下文完全忽略了我的想法。

我正在尝试编写一个脚本来转到学生文件夹,具体取决于谁登录,但我不想决定它必须使用的所有文件夹。

例如 - 如果我想访问学生A,我会搜索

\\Server\Students\Cohort10\user

但学生B可以找到

\\Server\Students\Cohort08\user

如您所见,群组文件夹会导致预定义路径出现问题,因为它们不同。

那么有没有办法输入\ server \ Students \ VARIABLE \ user

我认为变量是$或*或类似的东西。


你正在寻找的词可能是通配符。请参阅superuser.com/questions/709651 / ...
Dave

Answers:


0

如果您使用的是PowerShell:

*通配符将匹配零个或多个字符

的?通配符将匹配单个字符

[mn]匹配从m到n的一系列字符,因此[fm] ake将匹配fake / jake / make

[abc]匹配一组字符a,b,c ..,所以[fm] ake将匹配fake / make

PowerShell通配符的含义一致,因此使用将匹配任何字符后跟一个句点(。)后跟任何字符。换句话说将只返回具有扩展名的文件,而不是目录。要返回所有项目只需使用一个*这与CMD shell下看到的行为完全不同。

使用WMI筛选器时,请使用WMI特定的通配符:%表示零个或多个字符,_表示单个字符。

通配符也可以在单引号和双引号内工作,以防止通配符扩展使用-LiteralPath参数(如果可用)。

例子

PS C:> Get-ChildItem c:\ work * .xls

PS C:> Get-ChildItem c:\ work [af] * .txt

PS C:> Get-ChildItem -literalpath'c:\ work \ test [1] .txt'

资源


在powershell中,您如何指定 c:\abc\def\.. < - where ..表示正则表达式..而不是返回目录..
barlop 2014年

1
*和?通配符也可以在cmd / batch中工作。
LastStar007 2015年

0

我认为你所寻找的是%VARIABLE%,例如

echo %TMP%

将使用该环境变量的值替换%TMP%。


0

虽然有%USERPROFILE%,也许你想要类似的东西 c:\blah\*\user

cmd做不到 c:\blah\*\user

我不确定powershell。

Linux shell,例如bash确实..然后你可以使用cygwin,因为cygwin可以为你做,在Windows中给你一个bash shell。

这里我们有一个目录结构

az\b\sdf\c\
az\b\qwer\c

您可以在路径中间的bash中使用通配符。这是来自cygwin

$ ls -l az/b/*/c
az/b/qwer/c:
total 0

az/b/sdf/c:
total 0

您可以通过/ cygdrive / c /访问cygwin中的主文件...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.