Окружающая среда: Windows 10
Вопрос: Если возможно - как мы можем задать имя самой верхней папки на диске в качестве переменной?
Мы получаем диск от стороннего производителя, который содержит обновления системы, которую мы используем - на диске находится папка с названием текущей версии (например, blahblahSystemblah-2018October-finalblah
), и она содержит все данные в этой версии. После того, как мы вставили диск в систему, мы используем robocopy для обновления сервера с изменениями, а затем пользователи, которые запускают систему после этого, обновляются сервером. Наши текущие проблемы заключаются в том, что мы должны установить имя папки вручную, поскольку robocopy не может (насколько мне известно) использовать подстановочный знак в своем источнике, имя папки важно в другом месте, поэтому мы не можем просто заставить их поместить содержимое непосредственно на диск и в идеале нам бы не хотелось перемещать командный файл перед его запуском (использовать текущий каталог было бы легко, но, как я уже сказал: имя папки важно, и мы стараемся не допускать ручного ввода / вывода пользователей до минимума).
Соответствующая часть скрипта будет выглядеть так:
@echo off
for (however you can get the top folder name automatically) do (set VRSN=however)
robocopy "D:\VRSN" "C:\local\directory" /e /mir /r:0 /w:0 /log:"C:\log\directory.txt"
Самая близкая вещь, которую я смог найти, - это фрагмент скрипта, где "knownfile" - это имя файла, который всегда будет в папке:
setlocal enabledelayedexpansion
cd /d "D:\"
for /R %%G in (knownfile) do (
set "var1=%%~dpG"
set "var1=!var1:%CD%=!"
if not "!var1!"=="!prev!" (
if "!var1!"=="\" (echo .\) else echo(!var1:~1,-1!
)
set "prev=!var1!"
)
- но этот скрипт выплевывает больше, чем просто папка с этим известным файлом, и он также обрезает первый символ имени папки. Я буду первым, кто признает, что я не до конца понимаю синтаксис или где он идет не так, поэтому, если кто-нибудь может указать мне лучшее направление или помочь мне уточнить приведенный выше код, чтобы он возвращал только одну папку, это было бы очень очень признателен.