Показать полную графическую версию : [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла.
Доброго здоровья...
Есть BATничек:
echo off
Set MainDir=%~dp0
echo "%~n1">"%~n1.txt"|findstr /v "%~n1" %~n1.txt > %~n1.txt|md "%~n1"
move "%~n1.txt" "%~n1"
echo %1|mkdir "%~n1"
move "%1" "%~n1"
Создаёт текстовый документ по имени выбранного файла, перемещает документ и выбранный файл в созданную папку по имени выбранного файла.Но он работает только для одного файла.При прописке в контекстное меню корректно работает для 3-х файлов.
Вопрос, к Уважаемым знатокам-программистам:"Что или как нужно добавить в BAT-ник, что бы он заработал для многих файлов.
Простите, если этот вопрос Вас смешит или раздражает, заинтересовался BAT и VBS совсем недавно, очень интересно. Буду рад любому совету.Можно варианты на VBS...
Заранее благодарен.Сергей.
Упорно поковырявшись, просмотрев много примеров и прочитав немного полезной информации, дописал BATник.
Для меня это неожиданно, но вот так -
@Echo off
if exist "%~n1\%~n1.txt" (
:DEFAULT
Echo MsgBox "Объект ""%~n1\%~n1.txt"" , уже существует !" > msg.vbs
wscript msg.vbs
del msg.vbs (
goto BREAK10
)else if not exist "%~n1\%~n1.txt" (
echo "%~n1">"%~n1.txt"|findstr /v "%~n1" "%~n1.txt">"%~n1.txt"|md "%~n1"
move "%~n1.txt" "%~n1"
) else (
goto DEFAULT
)
:BREAK10
if exist "%~n1\%~nx1" (
:DEFAULT
Echo MsgBox "Объект ""%~n1\%~nx1"" , уже существует !" > msg.vbs
wscript msg.vbs
del msg.vbs (
goto BREAK10
)else if not exist "%~dp0\%~n1\%~nx1" (
echo "%~nx1"|mkdir "%~n1"
move "%~nx1" "%~n1"
) else (
goto DEFAULT
)
:BREAK10
-BATник заработал как надо. Единственное, что я пока понял, он работает только для 22-х файлов, что в принципе для работы из контекстного меню и для моих целей вполне достаточно. Ещё не смог пока прикрутить сюда открытие .txt при создании(очень удобно-сразу писать) и открытие созданной папки при проверке, если найден родительский объект(удобно, для просмотра)Будем учиться.
В принципе вопрос решён...
Вот, то же самоё на VBS:
Dim objWshShell, strFileName, strFullFileName
Dim strFullFolderName
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
If WScript.Arguments.Count = 1 Then
sFile = WScript.Arguments.Item(0)
Set fso = CreateObject("Scripting.FileSystemObject")
strFileName = sFile
End If
STR = strFileName
intLength = Len(str)
intCharacters = intLength - 4
strNew = Left(str, intCharacters)
strFullFolderName = objFSO.BuildPath(objWshShell.SpecialFolders("C , D ,"), strNew)
If objFSO.FolderExists(strFullFolderName) Then
result = MsgBox ("Папка """& strFullFolderName &""" уже существует." & Chr(10) & "Выберите действие:" & Chr(10) & " " & Chr(10) & """Да"" - переименовать папку в """& strFullFolderName & "_OLD""""" & Chr(10) & "и продолжить работу." & Chr(10) & """Нет"" - окрыть существующую папку для просмотра." & Chr(10) & """Отмена"" - завершить работу.", vbYesNoCancel, "Выбор действия.")
Select Case result
Case vbYes
if objFSO.FolderExists(strFullFolderName & "_OLD") Then
objFSO.DeleteFolder strFullFolderName & "_OLD"
objFSO.MoveFolder strFullFolderName , strFullFolderName & "_OLD"
objFSO.CreateFolder strFullFolderName
WScript.Sleep 500
Else
objFSO.MoveFolder strFullFolderName , strFullFolderName & "_OLD"
objFSO.CreateFolder strFullFolderName
WScript.Sleep 500
end if
Case vbNo
objWshShell.Run(strFullFolderName & "\")
WScript.Quit 0
Case vbCancel
WScript.Quit 0
End Select
Else
objFSO.CreateFolder strFullFolderName ' 40-стр
End If
strFullFileName = objFSO.BuildPath(objWshShell.SpecialFolders("C , D ,"), strNew)
objFSO.CreateTextFile strFullFileName & ".txt"
objFSO.MoveFile strFullFileName & ".txt" , strFullFileName & "\"
strFullFileName = objFSO.BuildPath(objWshShell.SpecialFolders("C , D ,"), strFileName)
objFSO.MoveFile strFullFileName , strFullFolderName & "\"
'Можем открыть папку для просмотра, если надо:
' objWshShell.Run("Explorer" &" " & strFullFolderName & "\")
Set objWshShell = Nothing
Set objFSO = Nothing
WScript.Quit 0
Не понятно только - почему работает только для 22-х файлов. Или это особенности операционной системы(может у меня, что-то не работает?) или я чего-то не догоняю.
Объясните, пожалуйста, если у кого-нибудь найдётся свободное время и желание.
Заранее благодарен...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.