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

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

我不确定我是否在问题中使用了正确的表达,但我完全忘记了上下文。

我正在尝试编写一个脚本来根据登录的用户进入学生文件夹,但我不想决定它必须使用的所有文件夹。

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

\\Server\Students\Cohort10\user

但学生 B 可以在

\\Server\Students\Cohort08\user

如您所见,由于同类文件夹不同,因此预定义路径会出现问题。

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

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

答案1

如果您使用 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

注意:在 C:\work\test[1].txt 中,如果要获取子项的文本路径,则必须使用 Get-ChildItem 命令。

来源

答案2

我认为您要寻找的是 %VARIABLE%,例如

echo %TMP%

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

答案3

虽然有 %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 中的主要文件

相关内容