Копіювання файлів засновувало його назву на відповідних папках призначення


0

У мене є такі файли.

Makeup_Artists_A_Kreations_Hair_And_Beyond Makeup_Artists_A_Kreations_Hair_And_Beyond1 Makeup_Artists_A_Kreations_Hair_And_Beyond2 Makeup_Artists_A_Kreations_Hair_And_Beyond3 Makeup_Artists_A_Kreations_Hair_And_Beyond4 Makeup_Artists_A_Kreations_Hair_And_Beyond5 Make_Artist_JustinWorks Make_Artist_JustinWorks1 Make_Artist_JustinWorks2

Я хотів перемістити / скопіювати ці файли в папку з ім'ям. A_Kreations_Hair_And_Beyond і JustinWorks.

Будь-які входи /?

Примітки / Поради: У мене є структура папок і Make Artist є загальним у всіх файлах. Я втомився від усіх результатів пошуку на цьому сайті.

Дякую


Чесно кажучи, подібного запитання на цьому сайті я не отримав. але я знайшов цей stackoverflow.com/questions/2609776/… . але його perl. Я не набагато сильніше, ніж BATCH, SHELL. Я ГІС Гай ;-)
user1586957

SuperUser не є сайтом "зробити мою роботу для мене", і ваш профіль показує деякі знання в області програмування (на StackOverflow). Якщо ви розповісте нам, що ви пробували, і де ви застрягли, ми можемо спробувати допомогти.
Atzmon

Будь ласка, зверніть увагу, що superuser.com це не безкоштовна служба написання скриптів / кодів. Якщо ви розповісте нам про те, що ви пробували до цього часу (включайте скрипти / код, який ви вже використовуєте), і де ви застрягли, ми можемо спробувати допомогти з певними проблемами. Ви також повинні прочитати Як мені поставити хороше запитання? .
DavidPostill

Відповіді:


2

Powershell і пакетні рішення не настільки різні. Минуле в Powershell / cmd - консоль

Пакет:

For %A in ("JustinWorks" "A_Kreations_Hair_And_Beyond"
  ) Do (if not Exist ".\%~A" MD ".\%~A"
    Move ".\*%~A*" ".\%~A\"
)

Powershell

"JustinWorks", "A_Kreations_Hair_And_Beyond"|
  %{$Name=$_;if (!(Test-Path(".\$_"))) {MD ".\$_"};
    GCI "*$Name*" |%{MV -path "$_" -dest ".\$Name\" -ea silentlycontinue}}

Редагувати

Рішення пакетного файлу за умови, що PreFix постійно Make_Artist_ Var BaseFldr має бути відповідно змінено. Команда Move /Y перезаписує файли, вже наявні в підпапці, щоб отримати запит на зміну Move /-Y

:: move2Sub.cmd :::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off & setlocal EnableExtensions EnableDelayedExpansion
Set BaseFldr="Q:\Test\2016-11\02"
PushD %BaseFldr% ||(Echo Can't cd to %BaseFldr% & Pause & Goto :eof)
Set "PreFix=Makeup_Artists_"
For /F "delims=" %%A in (
  'Dir /B/ON/A-D "%PreFix%*" ^>Nul 2^>^&1'
    ) Do Call :CheckFile "%%~nxA"
Goto :Eof
:CheckFile "FullName"
If Not Exist %1 Goto :Eof
Set "File=%~n1"
:: remove Prefix
Set "Name=!File:%PreFix%=!"
:: check for trailing number, should already be processed
:Again
Echo:%Name:~-1%|Findstr "[0-9]" >Nul 2>&1 &&(Set "Name=!Name:~0,-1!"&Goto :Again)
If Not Exist "%Name%" MD "%Name%"
Move /Y "%PreFix%%Name%*%~x1" "%Name%" >NUL
Goto :Eof

HTH


Як зробити змінну "JustinWorks" і "A_Kreations_Hair_And_Beyond" змінною?
user1586957

У вас є список / колекція / масив імен для обробки Який тип сценарію ви б використовували PoSh / batch або будь-яку мову високого рівня?
LotPings

Я думаю, що вона повинна розділитися "Makeup_Artists_" візьмемо значення після цього рядка. "Makeup_Artists_" є загальним шаблоном у всіх іменах файлів.
user1586957

1
Як щодо Make_Artist_ і як лікувати кінцеві номери? Ваше питання - це тематика ІМО на цьому сайті Довідковий центр запитує . Зміна цього питання також є nogo. Neverless я уточню свою відповідь, якщо я отримаю деякий час
LotPings
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.