Windows 7 "Move to folder"

 

Вчера занялся вопросом сортировки файлов, так как делать было нечего. Основная идея - перенести файл в папку с помощью правого клика мышки. Решение было таким: создать ярлык в папке SendTo. Для этого нужно нажать Win+R, набрать в окне shell:sendto, в окне создать ярлык и ввести команду

C:\Windows\System32\cmd.exe /c echo %1 & chcp 1251 & move %~f1 "d:\!pic sorted\Котики" & pause


Не прокатило, пришлось вернуться к VBscript и вспомнить прошлое. В папке создал файл Котики.vbs:

set fso=CreateObject("Scripting.FileSystemObject")
Set args = Wscript.Arguments
dst="d:\!pic sorted\Котики\"
For Each arg In args
If not (fso.FileExists(arg)) Then
fso.MoveFile arg, dst
else
Set objFile = fso.GetFile(arg)
sName = objFile.Name
sPath = objFile.Path
sPath = Left(sPath, Len(sPath)-Len(sName))
ext = fso.GetExtensionName(sName)
sName = Left( sName,Len(sName)-Len( fso.GetExtensionName(sName) )-1 )
i=1
Do While fso.FileExists(dst+sName+"("+CStr(i)+")."+ext)
 i=i+1
Loop
fso.MoveFile arg, dst+sName+"("+CStr(i)+")."+ext
Set objFile = Nothing
Set FSO = Nothing
end if
Next

Цель кода - скопировать дубль файла: filename.jpg скопирует filename(1).jpg . Пока работает.

Дополнение: написал не пойми что, верный скрипт:


set fso=CreateObject("Scripting.FileSystemObject")
Set args = Wscript.Arguments
dst="d:\!pic sorted\Котики\"
For Each arg In args
Set objFile = fso.GetFile(arg)
sName = objFile.Name
sPath = objFile.Path
sPath = Left(sPath, Len(sPath)-Len(sName))
ext = fso.GetExtensionName(sName)
sName = Left( sName,Len(sName)-Len( fso.GetExtensionName(sName) )-1 )
'WScript.Echo objFile.Name
If fso.FileExists(dst+objFile.Name) Then
i=1
Do While fso.FileExists(dst+sName+"("+CStr(i)+")."+ext)
 i=i+1
Loop
'WScript.Echo dst+sName+"("+CStr(i)+")."+ext
fso.MoveFile arg, dst+sName+"("+CStr(i)+")."+ext
Set objFile = Nothing
Set FSO = Nothing
else
fso.MoveFile arg, dst
end if
Next


Комментарии