Войти

Показать полную графическую версию : [решено] bat файл автозамена данних


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

Iska
02-11-2021, 19:31
Когда вставляешь флешку в компьютер, автоматически bat запускается »
Забудьте. Подобное можно настроить только со стороны компьютера, но не со стороны флешки. Посему вопрос — зачем держать данный пакетный файл на флешке?

или заменяет с флешки новые файлы мр4 »
Название удаленных файлов и новых будет одинаковыми типа 1мр4, 2мр4, 3 мр4. »
Попробуйте описать задачу подробнее. Без «типа».

Mihail07
02-11-2021, 19:50
Со стороны компьютера отличное решение. На флешке есть файлы 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
На флешке есть файлы »
В каком конкретно каталоге? В корневом?

Mihail07
02-11-2021, 20:07
Да, корневой каталог

Mihail07
03-11-2021, 09:53
Подобное можно настроить только со стороны компьютера »
Подскажите, где можно узнать больше информации по этому вопросу. Не могу найти.

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

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

Mihail07
03-11-2021, 13:49
ДА!!! Все работает. Спасибо огромное) А можете еще помочь? Нужно скрыть работу батника и после выполнения замены файлов автоматически перегрузился компьютер.

bredych
03-11-2021, 15:18
Нужно скрыть работу батника »
только через что-то другое. Напр, 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

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

Mihail07
03-11-2021, 15:40
спасибо огромное за помощь!) Точно не вредительство. Разработал кастомное устройство и нужно дать пользователю возможность замены контента без лишних движений. Еще раз спасибо огромное)

Iska
03-11-2021, 17:03
файлик авторан.инф в корне флешки может запускать батник формата »
Не может. Отключили ещё в XP.

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

bredych
03-11-2021, 18:05
Не может. Отключили ещё в XP. »
вроде у человека работает..
мне как-то влом вспоминать, где я поназапрещал автоплеи (и реестр, и политики, и еще где-то), чтоб проверить.. Уж очень меня бесили эти выскакивающие окошки при вставке чего угодно..

Iska
03-11-2021, 19:18
bredych, не, именно AutoPlay — работает. Не работает Autorun.

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

Iska
03-11-2021, 21:58
1. Загрузите View any installed/connected USB device on your system (https://www.nirsoft.net/utils/usb_devices_view.html) соответствующей разрядности.
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) два следующих параметра:
https://i.imgur.com/LVODbTV.png
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




© OSzone.net 2001-2012