Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] bat файл автозамена данних (http://forum.oszone.net/showthread.php?t=349934)

Mihail07 02-11-2021 18:29 2970460

bat файл автозамена данних
 
Здравствуйте, уважаемые форумчане. Хочу попросить Вас о помощи в написании скрипта
Попробую описать подробно задачку:
Нужно сделать bat и закинуть на флешку. Когда вставляешь флешку в компьютер, автоматически bat запускается и удаляет или заменяет в папке С:\Temp\видео все файлы mp4 (около 16 шт) и вставляет или заменяет с флешки новые файлы мр4. Название удаленных файлов и новых будет одинаковыми типа 1мр4, 2мр4, 3 мр4. Буду весьма признателен за помощь)

Iska 02-11-2021 19:31 2970464

Цитата:

Цитата Mihail07
Когда вставляешь флешку в компьютер, автоматически bat запускается »

Забудьте. Подобное можно настроить только со стороны компьютера, но не со стороны флешки. Посему вопрос — зачем держать данный пакетный файл на флешке?

Цитата:

Цитата Mihail07
или заменяет с флешки новые файлы мр4 »

Цитата:

Цитата Mihail07
Название удаленных файлов и новых будет одинаковыми типа 1мр4, 2мр4, 3 мр4. »

Попробуйте описать задачу подробнее. Без «типа».

Mihail07 02-11-2021 19:50 2970471

Со стороны компьютера отличное решение. На флешке есть файлы 1.mp4, 2.mp4, 3.mp4, 5.mp4, 6.mp4, 7.mp4, 8.mp4, 9.mp4, 10.mp4, 11.mp4, 12.mp4, 13.mp4, 14.mp4, 15.mp4. Эти файлы нужно копировать в С:\Temp\видео в котором находятся старие файлы с тем же названием 1.mp4, 2.mp4, 3.mp4, 5.mp4, 6.mp4, 7.mp4, 8.mp4, 9.mp4, 10.mp4, 11.mp4, 12.mp4, 13.mp4, 14.mp4, 15.mp4 их нужно удалить.

Но так, что бы это все было автоматически. Вставил флешку с файлами и они автоматически заменились на компьютере

есть контент на устройстве, 15 видеороликов каждый видеоролик имеет свое название 1.mp4, 2.mp4 и так далее. Для замены контента клиент кладет на флешку новый контент с названием 1.mp4, 2.mp4 и так далее. и таким образом компьютер заменяет файлы на новые. Я совсем не селен в написании такого рода скрипта. Буду очень благодарен за помощь!)

Iska 02-11-2021 20:06 2970476

Цитата:

Цитата Mihail07
На флешке есть файлы »

В каком конкретно каталоге? В корневом?

Mihail07 02-11-2021 20:07 2970477

Да, корневой каталог

Mihail07 03-11-2021 09:53 2970517

Цитата:

Цитата Iska
Подобное можно настроить только со стороны компьютера »

Подскажите, где можно узнать больше информации по этому вопросу. Не могу найти.

bredych 03-11-2021 11:59 2970532

в принципе, если не отключен автоплей, файлик авторан.инф в корне флешки может запускать батник формата
@echo off
del C:\Temp\*.mp4 /y
xcopy F:\*.mp4 C:\Temp\*.* /y
exit

Разумеется, не проверял, просто навскидку прикинул. Имя буквы диска, само собой, подставить своё. Ключи выполнять всё втихую.. не помню, давно не открывал, проверьте в синтаксисе.

Mihail07 03-11-2021 13:49 2970553

ДА!!! Все работает. Спасибо огромное) А можете еще помочь? Нужно скрыть работу батника и после выполнения замены файлов автоматически перегрузился компьютер.

bredych 03-11-2021 15:18 2970571

Цитата:

Цитата Mihail07
Нужно скрыть работу батника »

только через что-то другое. Напр, vbs, который запускает батник без окна.

Цитата:

Save the following as wscript, for instance, hidecmd.vbs after replacing "testing.bat" with your batch file's name.

Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false

The second parameter of oShell.Run is intWindowStyle value indicating the appearance of the program's window and zero value is for hidden window.

The reference is here http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx
Цитата:

Цитата Mihail07
и после выполнения замены файлов автоматически перегрузился компьютер. »

надеюсь, это не какое-то вредительство?
shutdown.exe /r /t 00
где t - время задержки.

Mihail07 03-11-2021 15:40 2970582

спасибо огромное за помощь!) Точно не вредительство. Разработал кастомное устройство и нужно дать пользователю возможность замены контента без лишних движений. Еще раз спасибо огромное)

Iska 03-11-2021 17:03 2970597

Цитата:

Цитата bredych
файлик авторан.инф в корне флешки может запускать батник формата »

Не может. Отключили ещё в XP.


Цитата:

Цитата Mihail07
Нужно скрыть работу батника и после выполнения замены файлов автоматически перегрузился компьютер. »

А сразу можно было озвучить?

bredych 03-11-2021 18:05 2970608

Цитата:

Цитата Iska
Не может. Отключили ещё в XP. »

вроде у человека работает..
мне как-то влом вспоминать, где я поназапрещал автоплеи (и реестр, и политики, и еще где-то), чтоб проверить.. Уж очень меня бесили эти выскакивающие окошки при вставке чего угодно..

Iska 03-11-2021 19:18 2970624

bredych, не, именно AutoPlay — работает. Не работает Autorun.

Цитата:

Цитата bredych
Уж очень меня бесили эти выскакивающие окошки при вставке чего угодно.. »

Аналогично ;), коллега!

Iska 03-11-2021 21:58 2970654

1. Загрузите View any installed/connected USB device on your system соответствующей разрядности.
2. Создайте в каталоге %ProgramFiles% каталог USBDeview.
3. Извлеките в него содержимое загруженного архива (usbdeview.zip или usbdeview-x64.zip).
4. Создайте в том же каталоге файл «RunConnected.vbs» со следующим содержимым:
Скрытый текст
Код:

Option Explicit

Dim strDrive

Dim objFSO
Dim objFile

Dim bFound
Dim strResult

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObjectEx


If WScript.Arguments.Named.Count = 1 Then
        If WScript.Arguments.Named.Exists("Drive") Then
                strDrive = WScript.Arguments.Named.Item("Drive")
               
                Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
               
                If objFSO.DriveExists(strDrive) Then
                        If objFSO.FolderExists("c:\Temp\видео") Then
                                bFound    = False
                                strResult = ""
                               
                                For Each objFile In objFSO.GetFolder(strDrive & "\").Files
                                        If StrComp(objFSO.GetExtensionName(objFile.Name), "mp4", vbTextCompare) = 0 Then
                                                objFile.Copy "c:\Temp\видео\", True
                                                bFound    = True
                                                strResult = strResult & objFile.Name & vbCrLf
                                        End If
                                Next
                               
                                If bFound Then
                                        If MsgBox("Following files are copyed:" & vbCrLf & _
                                                "----------------------" & vbCrLf & _
                                                strResult & _
                                                "----------------------" & vbCrLf & vbCrLf & _
                                                "Restart computer now?", vbQuestion + vbYesNoCancel _
                                        ) = vbYes Then
                                               
                                                Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
                                                objSWbemLocator.Security_.Privileges.AddAsString "SeShutdownPrivilege"
                                                Set objSWbemServicesEx = objSWbemLocator.ConnectServer(".", "root\cimv2")
                                               
                                                For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_OperatingSystem")
                                                        ' Reboot here!
                                                        'objSWbemObjectEx.Reboot()
                                                Next
                                               
                                                Set objSWbemServicesEx = Nothing
                                                Set objSWbemLocator    = Nothing
                                        End If
                                Else
                                        WScript.Echo "Nothing of *.mp4 found on root folder of [" & strDrive & "] drive."
                                        WScript.Quit 5
                                End If
                        Else
                                WScript.Echo "Not found destination folder [c:\Temp\видео]."
                                WScript.Quit 4
                        End If
                Else
                        WScript.Echo "Not found source drive [" & strDrive & "]."
                        WScript.Quit 3
                End If
               
                Set objFSO = Nothing
        Else
                WScript.Echo "This script can't be runned manually." & vbCrLf & vbCrLf & _
                        "Usage: wscript.exe """ & WScript.ScriptName & """ /Drive:<drive letter>"
                WScript.Quit 2
        End If
Else
        WScript.Echo "This script can't be runned manually." & vbCrLf & vbCrLf & _
                "Usage: wscript.exe """ & WScript.ScriptName & """ /Drive:<drive letter>"
        WScript.Quit 1
End If

WScript.Quit 0


5. Запустите оттуда USBDeview.exe и задайте в расширенных параметрах (\Options\Advanced Options) два следующих параметра:
Скрытый текст

Код:

wscript.exe "RunConnected.vbs" /Drive:"%drive%"

При вставке флешки будет запускаться указанный скрипт WSH, проверяться наличие путей и файлов *.mp4, каковые будут копироваться с каталог-приёмник «c:\Temp\видео», после чего будет задан вопрос о перезагрузке машины (кстати, зачем?!).
6. Добавьте автоматический запуск USBDeview.exe любым удобным Вам способом.
7. После того, как отладите копирование, раскомментируйте в скрипте строку с вызовом перезагрузки, убрав перед ней знак апострофа «'»:
Код:

                                                For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_OperatingSystem")
                                                        ' Reboot here!
                                                        'objSWbemObjectEx.Reboot()
                                                Next



Время: 19:29.

Время: 19:29.
© OSzone.net 2001-