Пакетный файл. Передача данных

0

Я получил свою партию, и она прекрасно работает!

Я хотел бы добавить еще одну вещь. У некоторых из моих клиентов есть папки в корне C. Как я могу сделать пакетный файл Потяните целые папки, которые они добавляют, туда, где они мне нужны, не беря папки типа «Программы», «Драйверы» и т. Д.

Сценарий: у клиента есть 3 папки с именами «Личная 1», «Личная 2» и «Личная 3», но есть и другие системные папки с именами «Драйверы», «Программные файлы», «Значки», «WINNT» и т. Д. Есть ли способ, которым я могу просто извлечь «Персональный 1», «Персональный 2» и «Персональный 3» без необходимости создавать новую строку для каждой папки? Это было бы бессмысленно. Спасибо!

My Batch File
set /p targetuser="Enter target username: "
xcopy /s/z F:\"Documents and Settings"\%targetuser%\Desktop D:\"Documents and 
Settings"\%username%\Desktop

xcopy /s/z F:\"Documents and Settings"\%targetuser%\Favorites D:\"Documents and Settings"\%username%\Favorites

xcopy /s/z F:\"Documents and Settings"\%targetuser%\"My Documents" D:\"Documents and Settings"\%username%\"My Documents"

xcopy /s/z F:\"Documents and Settings"\%targetuser%\Recent D:\"Documents and Settings"\%username%\Recent
xcopy /s/z F:\"Documents and Settings"\%targetuser%\NetHood D:\"Documents and Settings"\%username%\NetHood

xcopy /s/z F:\"Documents and Settings"\%targetuser%\PrintHood D:\"Documents and Settings"\%username%\PrintHood

xcopy /s/z F:\"Documents and Settings"\%targetuser%\Templates D:\"Documents and Settings"\%username%\Templates

xcopy /s/z F:\"Documents and Settings"\%targetuser%\"Start Menu" D:\"Documents and Settings"\%username%\"Start Menu"

xcopy /s/z F:\"Documents and Settings"\%targetuser%\"Local Settings"\"Application Data"\Microsoft\Outlook D:\"Documents and Settings"\%username%\"Local Settings"\"Application Data"\Microsoft\Outlook

pause

Дополнительная информация: Мой командный файл в основном работает со стандартными папками. У некоторых клиентов есть нестандартные папки там C Drive, как на этой фотографии.

введите описание изображения здесь

Как сделать так, чтобы командный файл брал все папки «data», «fun» и «go» без добавления строки в пакет? "xcopy / s / z C: \ Data D: \" Это займет много времени.


Есть ли файлы, которые я могу сказать пакетный файл не тянуть? как "программные файлы" или winnt. Извините, я новичок в создании командных файлов. Извините, если вы не до конца понимаете.

Даниил
источник
3
I got my batchневозможно понять без дополнительной информации (например, информация в superuser.com/questions/518430/batch-file-transfer-addon ). Предлагаю улучшить пост.
Хеннес
Пожалуйста, предоставьте больше деталей. Как вы справляетесь со списком папок? Возможных решений может быть несколько: Personal*соответствует всем трем папкам; в противном случае вы должны перечислить папки исключений, которые не должны обрабатываться.
Алексей Иванов
извиняюсь. обновлено.
Даниэль
Исключения в scoot тоже могут сработать
Марк Девен

Ответы:

3

Используйте RoboCopy! Смотрите robocopy /?за помощью.

@echo off
set /p "targetuser=Enter target username: "

:: Your xcopy statements here.  These too can be converted into using robocopy.

:: This will copy from C: into D: including subdirectories, ignoring all files and ignoring the specified folders.
robocopy "C:\" "D:\" /s /mt /xf *.* /xd "C:\Program Files" "C:\Drivers" "C:\WinNT" "C:\Icons"
pause
Дэвид Руман
источник
У меня есть несколько сценариев резервного копирования, использующих Robocopy. Это очень быстро, особенно при использовании его опций, которые копируют только новые (измененные) файлы и другие. Robocopy GUI - это утилита, которая очень помогает начать работу со всеми ее параметрами, поскольку она создаст командную строку для вас. Technet.microsoft.com/en-us/library/…
Коди Браун