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

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

Dt83 02-09-2011 14:35 1744730

Копирование файла с маской...
 
Добрый день!

Не могу понять почему не отрабатывает скрипт (копирование файла с маской: SBC........._1..\.txt):

iDir1 = "D:\test2\in" ---- дир., где размещается файл
iDir2 = "D:\test2\out" ---- дир., в кот. надо скопировать

Maska = "SBC........._1..\.txt$"

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.copyFile ""+iDir1+"\"+Maska+"", ""+iDir2+""


Благодарю!

Iska 02-09-2011 15:12 1744749

Dt83, где маска? Это:
Код:

"SBC........._1..\.txt$"
имя папки «SBC........._1..» и файла «.txt$».

Символами маски могут быть:
* — любое количество символов;
«?» — один символ.

Если нужно что-либо сложнее — те же регулярные выражения — создавайте объект «VBScript.RegExp» и используйте его для сравнения. Либо сразу переходите на PoSH.

P.S. Обратите внимание, как следует оформлять код тэгом [code].

Dt83 02-09-2011 16:18 1744798

предполагалось что : SBC........._1..\.txt маска имени файла. Дело в том что если адже явно указать имя файла, все равно ошибка выходит:

iDir1 = "D:\test2\in" ---- дир., где размещается файл
iDir2 = "D:\test2\out" ---- дир., в кот. надо скопировать


Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.copyFile ""+iDir1+"\SBC201111236_100.txt"+iDir2+""

Petya V4sechkin 02-09-2011 16:24 1744800

Цитата:

Цитата Dt83
FSO.copyFile ""+iDir1+"\SBC201111236_100.txt"+iDir2+""

А куда второй параметр дели? Зачем прилепили его к первому?

Dt83 05-09-2011 08:16 1746332

Имелось в виду (поспешила):

iDir1 = "D:\test2\in" ---- дир., где размещается файл
iDir2 = "D:\test2\out" ---- дир., в кот. надо скопировать


Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.copyFile ""+iDir1+"\SBC201111236_100.txt", ""+iDir2+""

Iska 05-09-2011 09:48 1746393

Dt83, метод «.CopyFile» не может скопировать файл «D:\test2\in\SBC201111236_100.txt» в указываемый Вами файл «D:\test2\out», поскольку уже существует каталог с тем же именем. Чтобы второй параметр метода «.CopyFile» воспринимался как каталог — явно укажите на это обстоятельство:
Код:

FSO.copyFile ""+iDir1+"\SBC201111236_100.txt", ""+iDir2+"\"
Описание Вашей ошибки дано прямо в справке по методу «.CopyFile»:
Цитата:

Scripting Runtime Library
CopyFile Method

But you cannot use:
Код:

FileSystemObject.CopyFile "c:\mydocuments\*\R1???97.xls", "c:\tempfolder"
If source contains wildcard characters or destination ends with a path separator (\), it is assumed that destination is an existing folder in which to copy matching files. Otherwise, destination is assumed to be the name of a file to create. In either case, three things can happen when an individual file is copied.

If destination does not exist, source gets copied. This is the usual case.

If destination is an existing file, an error occurs if overwrite is false. Otherwise, an attempt is made to copy source over the existing file.

If destination is a directory, an error occurs.

An error also occurs if a source using wildcard characters doesn't match any files. The CopyFile method stops on the first error it encounters. No attempt is made to roll back or undo any changes made before an error occurs.

читать дальше »

Код:

Option Explicit

Dim strFolderSource
Dim strFolderDest
Dim strFileName
Dim strFullFileName


strFolderSource = "D:\test2\in"
strFolderDest  = "D:\test2\out"
strFileName    = "SBC201111236_100.txt"

With WScript.CreateObject("Scripting.FileSystemObject")
        If .FolderExists(strFolderSource) Then
                If .FolderExists(strFolderDest) Then
                        strFullFileName = .BuildPath(strFolderSource, strFileName)
                       
                        If .FileExists(strFullFileName) Then
                                .CopyFile strFullFileName, strFolderDest & "\"
                        Else
                                WScript.Echo "Can't find [" & strFullFileName & "]"
                        End If
                Else
                        WScript.Echo "Can't find [" & strFolderDest & "]"
                End If
        Else
                WScript.Echo "Can't find [" & strFolderSource & "]"
        End If
End With

WScript.Quit 0


Dt83 05-09-2011 14:29 1746578

Спасибо за код, но хочется все таки понять синтаксис. Попробовала как вы посоветовали, но все равно ссылается на то что путь не найден:

iDir1 = "D:\test2\in"
iDir2 = "D:\test2\out"
Maska = "SBC........._1..\.txt$"

Set FSO2 = CreateObject("Scripting.FileSystemObject")
FSO2.copyFile ""+iDir1+"\"+Maska+"", ""+iDir2+"\"

делаю вариант такой, ошибка та же:

iDir1 = "D:\test2\in"
iDir2 = "D:\test2\out"
Maska = "SBC........._1..\.txt$"

Set FSO2 = CreateObject("Scripting.FileSystemObject")
FSO2.copyFile ""+iDir1+"\"+Maska+"", ""+iDir2+""

Делаю вариант такой (копирование осуществляется):
iDir1 = "D:\test2\in"
iDir2 = "D:\test2\out"
Maska = "SBC........._1..\.txt$"

Set FSO2 = CreateObject("Scripting.FileSystemObject")
FSO2.copyFile ""+iDir1+"\*.txt", ""+iDir2+""

Что же с маской такое, что wsh не понимает?

Iska 05-09-2011 16:20 1746661

Dt83, прочтите ещё раз сообщение #2, где указано, какие символы допустимы в масках имён.

Дополнение: Microsoft Windows XP - Using wildcard characters.

Dt83 06-09-2011 08:22 1747081

Iska, спасибо! наконец-то разобралась:)


Время: 13:42.

Время: 13:42.
© OSzone.net 2001-