Компьютерный форум 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=216593)

Oleg2011 27-09-2011 16:41 1761165

скопировать заданный файл из одного каталога в другой с другим именем
 
Здравствуйте! Начали работать в PowerShell, преподаватель задал выполнить следующее:

В зависимости от запроса в интерактивном режиме выбирается один из нескольких вариантов действий. Всю информацию, не заданную конкретными значениями, передавать через параметры при вызове командного файла. Предусмотреть реакцию на ошибочные ситуации (отсутствие нужных файлов или присутствие вновь создаваемых).

Само задание:
В зависимости от запроса
- скопировать заданный файл из одного каталога в другой с другим именем;

Помогите разобраться...пожалуйста
Заранее большое спасибо

Iska 27-09-2011 17:57 1761220

Oleg2011, думаю, начать стоит с этого.

Oleg2011 29-09-2011 14:06 1762420

var fso = new ActiveXObject("Scripting.FileSystemObject");

if (fso.FolderExists("C:\\TEST"))
WScript.Echo("Такая папка уже существует");
else

var Folder = fso.CreateFolder("C:\\TEST");
if (fso.FolderExists("C:\\TEST2"))
WScript.Echo("Такая папка уже существует");
else

var Folder = fso.CreateFolder("C:\\TEST2");

if (fso.FileExists("C:\\TEST\\test.txt"))
WScript.Echo("Такой файл уже существует");
else

var File = fso.CreateTextFile("C:\\TEST\\test.txt", true);

Создала две папки и файл. Вот не получается скопировать файл из первой папки во вторую ((

Iska 29-09-2011 16:58 1762538

Так Вам нужен PowerShell или JScript/WSH?!

Oleg2011 04-10-2011 13:34 1765575

PowerShell !!! Я вот только на JScript/WSH начал что-то понимать, а как сделать в PowerShell не знаю.

Kazun 04-10-2011 14:00 1765600

Для копирования объектов используйте Copy-Item (подробнее в Get-help Copy-Item) ,существует ли объет - используйте Test-Path ( подробнее get-help test-path). Справку по if можно получить - get-help about_if.

Oleg2011 04-10-2011 18:47 1765837

Спасибо.
А по поводу второго задания можете подсказать какие команды использовать:
из файла с указанным именем заданного каталога, содержащим записи вида: название книги, количество экземпляров, ФИО автора, год издания, выбрать записи с указанным названием и выдать их на экран с указанием порядковых номеров записей.

Kazun 04-10-2011 19:18 1765857

Для этого потребуется Import-Csv (сохранить файл в кодировке Unicode).

Для примера:

books.csv

Код:

название книги, количество экземпляров, ФИО автора, год издания
Война и мир,50,Толстой Лев Николаевич,1869
капитанская дочка,10,Пушкин Александр Сергеевич,1937
Краденое солнце,5,Чуковский Корней Иванович,2011

Выберем книги,где есть слово солнце.

Код:

$i=1
$books = Import-Csv books.csv | select *,@{n="Index";e={($global:i++)}}
$books | where {$_."название книги" -match "солнце"}


Пример вывода:


Код:

PS >  Import-Csv books.csv

название книги                количество экземпляров        ФИО автора                    год издания
--------------                ----------------------        ----------                    -----------
Война и мир                  50                            Толстой Лев Николаевич        1869
капитанская дочка            10                            Пушкин Александр Сергеевич    1937
Краденое солнце              5                            Чуковский Корней Иванович    2011

#Добавим индекс
PS >  $books


название книги        : Война и мир
количество экземпляров : 50
ФИО автора            : Толстой Лев Николаевич
год издания            : 1869
Index                  : 1

название книги        : капитанская дочка
количество экземпляров : 10
ФИО автора            : Пушкин Александр Сергеевич
год издания            : 1937
Index                  : 2

название книги        : Краденое солнце
количество экземпляров : 5
ФИО автора            : Чуковский Корней Иванович
год издания            : 2011
Index                  : 3

PS >  $books | where {$_."название книги" -match "солнце"}


название книги        : Краденое солнце
количество экземпляров : 5
ФИО автора            : Чуковский Корней Иванович
год издания            : 2011
Index                  : 3


Oleg2011 05-10-2011 10:13 1766270

Спасибо большое

Oleg2011 06-10-2011 17:15 1767504

Здравствуйте, начал выполнять задание - скопировать заданный файл из одного каталога в другой
получается так

function fcopy($a) {
$cnt = 0;
foreach ($i in $a) {
$cnt++;
if ($i -eq "-f") {
break;
}
}
if (!$f) {
$f = Read-Host "Введите имя копируемого файла";
}
if (!$d) {
$d = Read-Host "Введите имя папки, где находится копируемый файл";

}
if (!$l) {
$l = Read-Host "Введите имя папки,в которую скопировать файл";
}

как мне использовать Copy-Item -path ? не могу разобраться...
path прописываю путь
$p = "" + $d + "/" + $f;
Помогите....

Kazun 06-10-2011 17:32 1767514

Не понятно зачем такие сложности.
Copy-Item -Path C:\file.txt -Destination D:\Test\

Oleg2011 06-10-2011 17:47 1767525

да, спасибо.
а как мне сделать, чтобы файл скопировался в каталог с другим именем...
нам просто нужно чтобы мы сами вводили имя файла, каталога,
вот мой код

function fdelete($a) {
$cnt = 0;
foreach ($i in $a) {
$cnt++;
if ($i -eq "-f") {
break;
}
}
if (!$f) {
$f = Read-Host "Введите имя копируемого файла";
}
if (!$d) {
$d = Read-Host "Введите имя папки, где находится копируемый файл";

}
if (!$l) {
$l = Read-Host "Введите имя папки,в которую скопировать файл";
}


$p = "" + $d + "/" + $f;


if (Test-Path $p) {
Copy-Item -path $p -destination $l -recurse
write "Файл скопирован $p"
} else {
write "Файл не найден $p"
}

return;
}

всё работает, только как переименовать файл? как вставить Rename-Item в мой код

Fantastish 06-10-2011 17:55 1767535

чисто интеллектуально думаю стоит добавить типа строчки
"Введите имя нового файл";

Oleg2011 06-10-2011 18:20 1767549

Все Разобрался!!!

Oleg2011 09-10-2011 15:41 1769411

Здравствуйте, обращаюсь еще раз за помощью. По поводу второй задачи.
- из файла с указанным именем заданного каталога, содержащим записи вида: название книги, количество экземпляров, ФИО автора, год издания, выбрать записи с указанным названием и выдать их на экран с указанием порядковых номеров записей.

Была предложена идея Import-Csv (сохранить файл в кодировке Unicode). Преподаватель сказал все данные записать и сохранить в Блокноте. теперь возникла проблема написания скрипта, чтобы выбрать записи с указанным названием и выдать их на экран с указанием порядковых номеров записей. Помогите разобраться!
Спасибо.

Oleg2011 10-10-2011 15:55 1770146

С помощью Get-Content я обращаюсь к содержимому файла. Как мне выбрать записи с указанным названием?

Kazun 10-10-2011 16:03 1770151

Использовать Select-String,match и любой другой метод для поиска.

(Gc file.txt) -match "Текст"
Select-String file.txt -Pattern "Text"

Oleg2011 10-10-2011 16:30 1770167

Спасибо! а теперь как мне выдать их на экран с указанием порядковых номеров записей???

Kazun 10-10-2011 16:34 1770172

Как я показывал уже выше.

Oleg2011 10-10-2011 16:53 1770191

Так что-то непонятно: select *,@{n="Index";e={($global:i++)}}

Kazun 10-10-2011 17:03 1770201

Пример вашего файла приведите и причем ,что вы хотите получить.


Время: 19:27.

Время: 19:27.
© OSzone.net 2001-