скопируйте эту папку на сетевой диск (Robocopy или PowerShell) - PullRequest
0 голосов
/ 04 июля 2019

иметь структуру папок на локальном диске, как это и аналогичная структура на сетевом диске, как

C:\Documents\Projects\ 
\\myServer\Storage\Projects\

Для каждого нового проекта я создаю локально папки типа

 \Projects\abc\Subfolder1
 \Projects\abc\Subfolder2

Мне нужен PowerShell или пакетный файл. Пакет хранится в папке abc и должен выполнить

Robocopy C:\Documents\Projects\abc \\myServer\Storage\Projects\abc 

(конечно, некоторые ключи разумны)

Следующий проект, например xyz

\Projects\abc\Subfolder1
\Projects\abc\Subfolder2

Я ожидаю

 Robocopy C:\Documents\Projects\xyz \\myServer\Storage\Projects\xyz 

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

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

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Я не знаю, какие параметры Robocopy вам нужны, но это может быть началом.Это предполагает, что вы помещаете этот скрипт в каждый каталог \ Projects \ abc и запускаете его оттуда.

$DestinationShare = '\\myServer\Storage'
$SourcePath = $PSScriptRoot
$DestinationPath = $PSScriptRoot -replace ".*?(?<path>\\Projects\\.*)","$DestinationShare`${path}"
robocopy $SourcePath $DestinationPath

Это можно превратить в функцию с менее статичным кодированием.

Этобудет проще просто скопировать весь каталог Projects всякий раз, когда это потребуется.

0 голосов
/ 04 июля 2019

В пакете вы можете сделать что-то вроде этого:

@echo off

set "src=%~dp0"
set "dst=\\myServer\Storage"

for /d %%d in (%src%.) do set "name=%%~nd"

robocopy %src% %dst%\%name%\ /mir

%~dp0 - это каталог, в котором находится скрипт. Затем цикл for извлекает имя этого каталога из полного пути.

...