С Новым годом! Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 18.09.2018
Сообщений: 15
1

Поиск и перемещение файлов на сетевой диск

15.02.2024, 09:59. Показов 858. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго дня.

Помогите, пожалуйста, решить следующую задачу
В сетке много компьютеров.
Каждый компьютер имеет уникальное название.
Надо написать следующий скрипт, который бы находил флешку с уникальным названием "TFATSNYATO" (буква диска иногда меняется)
Искал бы в этой флешке в папке DCIM и подпапках все файлы с расширением jpg и перемещал бы их в сетевую папку по адресу
\\10.10.0.27\base\%имя компьютера с которого происходит перемещение%\%ГОД из даты файла jpg дата создания%\%Месяц из даты файла jpg дата создания%\%Дата из даты файла jpg дата создания%\
Если такой папки в пути нет - её надо создать
Вообще такое возможно?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2024, 09:59
Ответы с готовыми решениями:

Git for windows + сетевой диск. Клонирование репозитория в сетевой диск
Имеется HDD подключенный к роутеру TP-LINK Archer C6U. Через проводник windows (в сетевом...

Перемещение файлов на другой диск
Каким кодом можно переместить например c:\text.txt в d:\text.txt

Отправка файлов из UNIX сервера на SAMBA-шару (сетевой диск Windows)
Прошу помощи собрать все в кучу. Нужно перебросить все извлеченные файлы на SAMBA-шару. Есть...

Поиск файлов и перемещение каталога
Добрый день! подскажите, пожалуйста, как можно реализовать на PowerShell задачу: необходимо...

5
bat-пропагандист
968 / 171 / 73
Регистрация: 07.12.2022
Сообщений: 431
Записей в блоге: 12
15.02.2024, 13:44 2
пробуйте:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
setlocal EnableDelayedExpansion
 
for /f "skip=1" %%i in ('wmic LOGICALDISK WHERE VolumeName^="TFATSNYATO" GET Name') do set "Drive=%%i" & goto GotDrive
 
:GotDrive
for /f "tokens=*" %%i in ('dir /b /s "%Drive%\DCIM\*.jpg"') do (
    call :GetCreationDate "%%~i" Date
    set Day=!Date:~0,2!
    set Month=!Date:~3,2!
    set Year=!Date:~6,4!
    echo F | xcopy /y "%%~i" "\\10.10.0.27\base\%ComputerName%\!Year!\!Month!\!Day!\%%~nxi"
    del "%%~i" &rem Если не нужно удалять оригинальный файл, эту строку следует убрать
)
 
exit /b
 
:GetCreationDate [file] [outvar]
    for /f "tokens=1,2 skip=5" %%i in ('dir /-b "%~1" /t:c') do set "%~2=%%i %%j" & goto :eof
goto :eof
1
1 / 1 / 0
Регистрация: 18.09.2018
Сообщений: 15
23.02.2024, 10:00  [ТС] 3
nekit270,
Огромное спасибо за отклик!
Файлы не копировались в сетевую папку была ошибка "Неправильно указан диск", но благополучно удалялись. Поэтому я добавил строчку
Код
echo F | xcopy /y "%%~i" "D:\base\!Year!\!Month!\!Day!\%%~nxi
падают в папку локальную созданную сегодняшним числом, то есть дата создания файла игнорируется.
Путь у папки D:\base\2024\02\23 и в неё упали все файлы с разными числами создания.
0
2099 / 673 / 286
Регистрация: 26.03.2022
Сообщений: 1,270
Записей в блоге: 1
24.02.2024, 21:01 4
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@Echo Off &Cls
>nul Chcp 1251
    Set "VName=Transend32"
    Set "Share=\\192.168.100.23\Test2"
    Set "Ffrom=DSIM"
    Set "Mask=*.jpg"
rem Set "Mask=*.jpg *.png"
 
    If Not Exist "%Share%\" (Echo Folder "%Share%\" not found &Pause &Exit /B 2)
 
    Set "Name="
    For /F %%N In ('"WMIC LogicalDisk Where VolumeName="%VName%" GET Name|Find ":""') Do Set "Name=%%N"
    If Not Defined Name (Echo Volume "%VName%" not found &Pause &Exit /B 2)
    If Not Exist "%Name%\%Ffrom%\" (Echo Folder "%Name%\%Ffrom%" not found &Pause &Exit /B 2)
 
    Call :MyMove "%Name%\%Ffrom%"
    For /F "usebackq delims=" %%d In (`2^>nul Dir "%Name%\%Ffrom%\*.*" /S /B /A:D ^|Sort /R`) Do Call :MyMove "%%d"
Pause
Exit /B 0
 
:MyMove
Echo +++ %1
    Pushd %1
        For %%f In (%Mask%) Do (
            Set "P=%%~tf"
            Call Set "P=%Share%\%ComputerName%\%%P:~6,4%%\%%P:~3,2%%\%%P:~0,2%%"
            2>nul Call Md "%%P%%" 
            
            >nul Call Move /Y "%%f" "%%P%%\"
rem         Echo F|Call xcopy /D "%%f" "%%P%%\">nul
        )
    Popd
rem 2>nul Rd %1
Exit /B 0
Здесь предполагается формат даты в системе ДД.ММ.ГГГГ
Папки делаются по дате изменения, а не создания. Дата создания - весьма неоднозначная величина. Сегодня Вы скопировали на флэшку файлы - дата создания у них сегодняшняя. А дата изменения - реальная, более ранняя.
При желании можно указать несколько масок файлов, например Set "Mask=*.jpg *.png"
При желании можно удалить пустые папки после переноса файлов. Убрать rem перед 2>nul Rd %1
Можно не перемещать файлы, а копировать: заменить Call Move /Y "%%f" "%%P%%" на Echo F|Call xcopy /D "%%f" "%%P%%">nul

Метку флэшки, сетевой путь, маску укажите свои
0
2099 / 673 / 286
Регистрация: 26.03.2022
Сообщений: 1,270
Записей в блоге: 1
25.02.2024, 15:14 5
Чуть короче
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@Echo Off &Cls
>nul Chcp 1251
    Set "VName=Transend32"
    Set "Share=\\192.168.100.23\Test2"
    Set "Ffrom=DSIM"
    Set "Mask=*.jpg"
    Set "Mask=*.jpg *.png"
 
    If Not Exist "%Share%\" (Echo Folder "%Share%\" not found &Pause &Exit /B 2)
 
    Set "Name="
    For /F %%N In ('"WMIC LogicalDisk Where VolumeName="%VName%" GET Name|Find ":""') Do Set "Name=%%N"
    If Not Defined Name (Echo Volume "%VName%" not found &Pause &Exit /B 2)
    Pushd "%Name%\%Ffrom%" || (Echo Folder "%Name%\%Ffrom%" not found &Pause &Exit /B 2)
 
    For /F "usebackq delims=" %%f In (`2^>nul Dir %Mask% /S /B /A:-D ^|Sort /R`) Do (
        Set "P=%%~tf"
        Call Set "P=%Share%\%ComputerName%\%%P:~6,4%%\%%P:~3,2%%\%%P:~0,2%%"
        2>nul Call Md "%%P%%" 
            
        >nul Call Move /Y "%%f" "%%P%%\"
rem     Echo F|Call xcopy /D "%%f" "%%P%%\">nul
    )
    Popd
Pause
Exit /B 0
1
2099 / 673 / 286
Регистрация: 26.03.2022
Сообщений: 1,270
Записей в блоге: 1
27.02.2024, 21:23 6
Лучший ответ Сообщение было отмечено Shelsun как решение

Решение

Если надо копировать с флэшки в несколько папок
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Echo Off &Cls
>nul Chcp 1251
    Set "VName=Transend32"
    Set Share="\\192.168.100.23\Test2" "D:\CMD_Forum\Box_Out"
    Set "Ffrom=DSIM"
    Set "Mask=*.jpg *.png"
    
    Set "SS="&Set /A L=0
    For %%s In (%Share%) Do If Not Exist "%%~s\" (Echo Folder "%%~s" not found) Else (Set /A L+=1 &Call Set SS=%%SS%%%%s )
    If %L% Equ 0 (Echo Folder^(s^) %Share% not found &Pause &Exit /B 2)
 
    Set "Name="
    For /F %%N In ('"WMIC LogicalDisk Where VolumeName="%VName%" GET Name|Find ":""') Do Set "Name=%%N"
    If Not Defined Name (Echo Volume "%VName%" not found &Pause &Exit /B 2)
    Pushd "%Name%\%Ffrom%" || (Echo Folder "%Name%\%Ffrom%" not found &Pause &Exit /B 2)
 
    For /F "usebackq delims=" %%f In (`2^>nul Dir %Mask% /S /B /A:-D`) Do (
        Set "P=%%~tf"
        Call Set "P=%ComputerName%\%%P:~6,4%%\%%P:~3,2%%\%%P:~0,2%%"
        For %%s In (%SS%) Do (Call Set "PP=%%~s\%%P%%" &Echo F|Call xcopy /D "%%f" "%%PP%%\">nul)
    )
    Popd
Pause
Exit /B 0
Если в именах файлов нет !
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@Echo Off &Cls &SetLocal EnableExtensions EnableDelayedExpansion
>nul Chcp 1251
 
    Set "VName=Transend32"
    Set Share="\\192.168.100.23\Test2" "D:\CMD_Forum\Box_Out"
    Set "Ffrom=DSIM"
    Set "Mask=*.jpg *.png"
    
    Set "SS="&Set /A L=0
    For %%s In (%Share%) Do If Not Exist "%%~s\" (Echo Folder "%%~s" not found) Else (Set /A L+=1 &Set SS=!SS!%%s )
    If %L% Equ 0 (Echo Folder^(s^) %Share% not found &Pause &Exit /B 2)
 
    Set "Name="
    For /F %%N In ('"WMIC LogicalDisk Where VolumeName="%VName%" GET Name|Find ":""') Do Set "Name=%%N"
    If Not Defined Name (Echo Volume "%VName%" not found &Pause &Exit /B 2)
    Pushd "%Name%\%Ffrom%" || (Echo Folder "%Name%\%Ffrom%" not found &Pause &Exit /B 2)
 
    For /F "usebackq delims=" %%f In (`2^>nul Dir %Mask% /S /B /A:-D`) Do (
        Set "P=%%~tf"
        Set "P=%ComputerName%\!P:~6,4!\!P:~3,2!\!P:~0,2!"
        For %%s In (%SS%) Do (Set "PP=%%~s\!P!" &>nul 2>&1 (Echo F|xcopy /D "%%f" "!PP!\"))
    )
    Popd
Pause
Exit /B 0
1
27.02.2024, 21:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2024, 21:23
Помогаю со студенческими работами здесь

Поиск и перемещение группы файлов
Имеем каталог /home/user/Directory В данном каталоге имеются подкаталоги test bin hlam other...

Поиск и перемещение файлов с каталогом
Добрый день! Никак не получается набросать батник, который бы постоянно проверял один каталог, в...

Поиск файлов-компаньонов и перемещение в карантин
Программа должна осуществлять поиск файлов-компаньонов (исполняемые файлы с тем же названием, что и...

Поиск файлов по маске и их перемещение с условиями
Доброго здравствуйте, знатоки! Прошу помощи в написании батника : Рабочий каталог: D:\Work\Job...

После импорта на сетевой диск pst файлов,в поле "от" имена не сортируются выборочно
То есть проблема такая, обычно если нажать на нужном адресе и щелкнуть поле "от", все сообщения от...

Поиск и перемещение файлов по имени с созданием структуры папок
Коллеги, приветствую! Очень надеюсь на помощь знающих людей, т.к. сам не силен в написании...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru