Показать полную графическую версию : Копирование и удаление файла перетаскиванием.
avator@vk
01-06-2019, 21:41
Добрый день всем!
Скажите пожалуйста возможно ли сделать так, что бы при перетаскивании произвольного файла на батник или его ярлык, файл копировался в директорию D:/1/ ,а из текущего местоположения удалялся, при этом другие файлы не удалялись?
Возможно. И первый же вопрос, который возникает: что делать, если в каталоге назначения окажется файл с тем же именем?
avator@vk
01-06-2019, 21:56
Возможно. И первый же вопрос, который возникает: что делать, если в каталоге назначения окажется файл с тем же именем? »
Круто. Заменить.
Там дальше скрипт его заберёт и очистит директорию.
avator@vk, кстати, всё равно ярлык батника класть — а можно положить вместо него ярлык на D:\1\ и тащить туда файл правой кнопкой мышки, с выбором "Переместить. ;)
avator@vk
01-06-2019, 22:05
кстати, всё равно ярлык батника класть — а можно положить вместо него ярлык на D:\1\ и тащить туда файл правой кнопкой мышки, с выбором "Переместить. »
Я думал об этом, мне ещё скрипт надо запустить. Не так красиво будет.
А так взял файлик "бросил" в "черную дыру" и он улетел по smtp и следов от него нет )
avator@vk, вот Вам скрипт WSH:
Option Explicit
Const strDestPath = "D:\1"
Dim strSourceFile
Dim objFSO
Dim strContent
If WScript.Arguments.Count = 1 Then
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
strSourceFile = objFSO.GetAbsolutePathName(WScript.Arguments.Item(0))
If objFSO.FileExists(strSourceFile) Then
If objFSO.FolderExists(strDestPath) Then
objFSO.CopyFile strSourceFile, strDestPath & "\", True
If objFSO.FileExists(objFSO.BuildPath(strDestPath, objFSO.GetFileName(strSourceFile))) Then
objFSO.DeleteFile strSourceFile, True
Else
WScript.Echo "Can't copy source file [" & strSourceFile & "] into destination folder [" & strDestPath & "]."
WScript.Quit 3
End If
Else
WScript.Echo "Can't find destination folder [" & strDestPath & "]."
WScript.Quit 3
End If
Else
WScript.Echo "Can't find source file [" & WScript.Arguments.Item(0) & "]."
WScript.Quit 2
End If
Set objFSO = Nothing
Else
WScript.Echo "Usage: Drag any file on me."
WScript.Quit 1
End If
WScript.Quit 0
Сохраните приведённый код в файл с расширением .vbs и пользуйте, как планировали.
Update:
мне ещё скрипт надо запустить. »
Можете совместить.
avator@vk
01-06-2019, 22:13
Да это же чудо! :jump: :pray: Какой вы умный. Спасибо огромное. Как вообще можно за несколько секунд написать так.... Супер.
Раз уж cmd/bat, то недавно было (http://forum.oszone.net/post-2873527.html#post2873527)
Модифицируем его немного, для перемещения:
@echo off
set "folder=d:\1"
if not exist "%folder%" md "%folder%"
for %%i in (%*) do (
move /y "%%~i" "%folder%"
)
- перемещать можно хоть на сам батник, хоть на ярлык, от этого батника...
megaloman
02-06-2019, 11:35
Паразитирую на решении YuS_2@Echo Off
Set "Folder=Z:\1"
If Not Exist "%Folder%" Md "%Folder%"
For %%i In (%*) Do (
If Not Exist "%%~i\" >nul XCopy /H /R /Y "%%~i" "%Folder%\" &&Del /A "%%~i"
If Exist "%%~i\" >nul XCopy /H /R /E /Y "%%~i\*.*" "%Folder%\%%~nxi\" &&Rd /Q /S "%%~i"
)
pause
Exit /BОправдываюсь:
Моё решение годится для файлов и скрытых, и системных, и только для чтения.
Кроме того, мой код отработает и для папок. Если этого не надо, то выделенную строку удалить.
При этом останется контроль при ошибочном указании папки вместо файла.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.