我不确定我是否在问题中使用了正确的表达,但我完全忘记了上下文。
我正在尝试编写一个脚本来根据登录的用户进入学生文件夹,但我不想决定它必须使用的所有文件夹。
例如 - 如果我想访问学生 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 中的主要文件