<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: Создание ноль-копии папки]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8600&amp;type=atom" />
	<updated>2013-08-23T22:14:08Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8600</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Создание ноль-копии папки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74896#p74896" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p><strong>griha09</strong><br />Для Вас принципиально использование VBS в данной задаче? Может быть имеет смысл воспользоваться средствами только CMD.EXE?</p></blockquote></div><p>Да принципиально, т.к. с помощью CMD.EXE уже есть такой скрипт. Вот захотелось на VBS сделать.</p>]]></content>
			<author>
				<name><![CDATA[griha09]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27540</uri>
			</author>
			<updated>2013-08-23T22:14:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74896#p74896</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Создание ноль-копии папки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74810#p74810" />
			<content type="html"><![CDATA[<p>Используя команду <a href="http://ss64.com/nt/forfiles.html">FORFILES</a> можно существенно сократить код и время выполнения скрипта. В угоду читабельности : )</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2013-08-21T08:39:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74810#p74810</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Создание ноль-копии папки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74806#p74806" />
			<content type="html"><![CDATA[<p><strong>griha09</strong><br />Для Вас принципиально использование VBS в данной задаче? Может быть имеет смысл воспользоваться средствами только CMD.EXE?</p><p>Запускаете скрипт (назовем его nulcopy.bat) с параметрами <br />old_dir - имя исходного копируемого каталога<br />new_dir - имя целевого каталога, где будет воспроизведена исходная структура<br /></p><div class="codebox"><pre><code>
@echo off

:: Использование
:: nulcopy old_dir new_dir
::
:: Описание
:: Воспроизводит структуру каталога old_dir в каталоге new_dir. 
:: Целевой каталог должен быть создан до запуска скрипта. 
::
:: Пример
:: md &quot;C:\Temp\1&quot;
:: nulcopy &quot;C:\Program Files&quot; &quot;C:\Temp\1&quot;

setlocal enabledelayedexpansion

:: Проверить исходную и целевую директории
call :validate_dir &quot;%~1&quot; old_dir || goto :EOF
call :validate_dir &quot;%~2&quot; new_dir || goto :EOF

:: Создать структуру каталогов на новом месте
echo Creating a directory structure

for /f &quot;tokens=*&quot; %%L in ( &#039;
    dir /b /s /ad &quot;%old_dir%&quot;
&#039; ) do (
    set &quot;line=%%L&quot;
    set &quot;line=!line:%old_dir%=%new_dir%!&quot;
    call :mkdir &quot;!line!&quot;
)

:: Создать одноименные пустые файлы
echo Creating empty files

for /f &quot;tokens=*&quot; %%L in ( &#039;
    dir /b /s /a-d &quot;%old_dir%&quot;
&#039; ) do (
    set &quot;line=%%L&quot;
    set &quot;line=!line:%old_dir%=%new_dir%!&quot;
    call :touch &quot;!line!&quot;
)

endlocal
goto :EOF


:validate_dir
echo Validate &quot;%~1&quot;
pushd &quot;%~1&quot; || goto :EOF
set &quot;%~2=%CD%&quot;
popd
goto :EOF


:mkdir
md &quot;%~1&quot;
goto :EOF


:touch
set /p &quot;p=&quot; &lt;nul &gt;&gt;&quot;%~1&quot;
goto :EOF

</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2013-08-21T07:52:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74806#p74806</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Создание ноль-копии папки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74754#p74754" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Вообще-то &quot;ноль-копия папки&quot; создается в папке где находится скрипт.</p></blockquote></div><p>Тогда добавляйте условие, чтобы сама эта папка не обрабатывалась.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2013-08-20T16:06:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74754#p74754</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Создание ноль-копии папки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74751#p74751" />
			<content type="html"><![CDATA[<p>Вообще-то &quot;ноль-копия папки&quot; создается в папке где находится скрипт. Спасибо за помощь.</p>]]></content>
			<author>
				<name><![CDATA[griha09]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27540</uri>
			</author>
			<updated>2013-08-20T15:48:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74751#p74751</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Создание ноль-копии папки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74746#p74746" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>Option Explicit

Dim objFSO

Dim strSourceFolder
Dim strDestFolder
Dim objDestFolder


strSourceFolder = &quot;E:\Песочница\0313&quot;

Set objFSO = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)

If objFSO.FolderExists(strSourceFolder) Then
    strDestFolder = &quot;E:\Песочница\0314&quot;
    
    If Not objFSO.FolderExists(strDestFolder) Then
        Set objDestFolder = objFSO.CreateFolder(strDestFolder)
    Else
        Set objDestFolder = objFSO.GetFolder(strDestFolder)
    End If
    
    ScanSubFolders objFSO.GetFolder(strSourceFolder), objDestFolder
End If

WScript.Quit 0

Sub ScanSubFolders(objFolder, objDestFolder)
    Dim objFile
    Dim objSubFolder
    
    For Each objFile In objFolder.Files
        With objFSO.CreateTextFile(objFSO.BuildPath(objDestFolder.Path, objFile.Name))
            .Close
        End With
    Next

    For Each objSubFolder In objFolder.SubFolders
        ScanSubFolders objSubFolder, objFSO.CreateFolder(objFSO.BuildPath(objDestFolder.Path, objSubFolder.Name))
    Next
End Sub</code></pre></div><p>Если же Вы хотите создавать «нуль-копии папки» в том же каталоге, который обрабатываете — то позаботьтесь о том, чтобы созданная папка-«нуль-копия» сама не попадала в обработку.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2013-08-20T13:13:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74746#p74746</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS: Создание ноль-копии папки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74743#p74743" />
			<content type="html"><![CDATA[<p>Решил сделать &#039;Создание нуль-копии папки, т.к. удобно пользоваться нуль-копией папки\папок, в которой сохранена вся структура вложенных папок и находящихся в них файлов с сохранением их названий, но все файлы имеют нулевой размер и не содержат ни какой информации. Но не получается создать нуль-копии файлов в их подпапках, а получает только в корневой папке нуль-копии. В чем ошибка?<br /></p><div class="codebox"><pre><code>
papka = &quot;f:\save_обработ2\&quot;
 
Dim FSO, TextStream, Folder, SubFolder, File, FilePath
Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set Folder1 = FSO.GetFolder(papka)
Folder2 = Folder1.Name&amp;&quot;_Zero_&quot;&amp;CStr(Date)
If not FSO.FolderExists(Folder2) Then FSO.CreateFolder Folder2         &#039;создаем &quot;Zero_&quot;+Folder1.Name

RecursiveFolderScan papka
Msgbox &quot;ВСЕ!&quot;



Sub RecursiveFolderScan(FolderPath)
    &#039;Получаем объектную модель текущего каталога
    Set Folder = FSO.GetFolder(FolderPath)
 
    &#039;Перебираем все файлы в текущем каталоге
    For Each File in Folder.Files
FilePath = FSO.BuildPath(Folder2,File.Name)
Set TextStream =FSO.OpenTextFile(FilePath,2,True)
TextStream.Close
    Next
 
    &#039;Перебираем все подкаталоги в каталоге
    For Each SubFolder in Folder.SubFolders
folderpath=FSO.BuildPath(Folder2,SubFolder.Name)
FSO.CreateFolder  folderpath

       RecursiveFolderScan(SubFolder.Path)

    Next
End Sub
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[griha09]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27540</uri>
			</author>
			<updated>2013-08-20T12:46:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74743#p74743</id>
		</entry>
</feed>
