Я не уверен, использовал ли я правильное выражение в вопросе, но контекст полностью заболел.

Я пытаюсь написать скрипт для перехода в папку ученика, в зависимости от того, кто вошел в систему, но я не хочу выбирать все папки, которые он должен использовать.

Например, - если я хочу получить доступ к ученику А, я буду искать

\\Server\Students\Cohort10\user

Но студент B можно найти в

\\Server\Students\Cohort08\user

Как видите, папки когорт вызывают проблемы для предопределенных путей, потому что они различаются.

Так есть ли способ набрать \server \Students \VARIABLE \user

Я думал, что переменная была $ или * или что-то в этом роде.

3 ответа3

0

Если вы используете PowerShell:

Подстановочный знак * будет соответствовать нулю или более символов

? подстановочный знак будет соответствовать одному символу

[mn] Соответствует диапазону символов от m до n, поэтому [fm] ake будет соответствовать fake/jake/make

[abc] Совпадает с набором символов a, b, c .., поэтому [fm] ake будет соответствовать fake/make

Подстановочные знаки PowerShell соответствуют их значению, поэтому они используются . будет соответствовать любым символам, за которыми следует точка (.), за которой следуют любые символы. Другими словами . вернет только файлы с расширением, а не каталоги. Чтобы вернуть все элементы, просто используйте один * Это совершенно отличается от поведения, наблюдаемого в оболочке CMD.

При использовании фильтров 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'

Источник

0

Я думаю, что вы ищете% VARIABLE%, например

echo %TMP%

заменит% TMP% значением этой переменной среды.

0

Хотя существует% USERPROFILE%, может быть, вы хотите что-то вроде c:\blah\*\user

cmd не может сделать c:\blah\*\user

Я не уверен насчет PowerShell.

Оболочки Linux, например, bash, хотя ... и вы можете использовать cygwin, так как cygwin может сделать это за вас, предоставив вам оболочку bash в Windows.

Здесь у нас есть структура каталогов

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

Вы можете получить доступ к своим основным файлам в cygwin с помощью /cygdrive /c /...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .