Требовать скрипт, чтобы сделать копию всех файлов в папке и переименовать копии в текстовые файлы

Я хочу запустить пакетный файл в определенной папке, скопировать все файлы в этот каталог и переименовать эти копии, включая расширение в .txt.

То есть, если есть файлы с именами fhnbye.zip и 212obtr.xls, я хочу, чтобы он сделал их копии и переименовал в fhnbye.zip.txt и 212obtr.xls.txt

Это возможно?


person Tiaan    schedule 03.10.2013    source источник
comment
почему вы хотите добавить расширение .txt в каждый файл.   -  person Raptor    schedule 03.10.2013
comment
Привет, Шиван, в каком-то смысле это действительно глупо, но в наших нынешних условиях другого выхода нет. На одном из наших файловых серверов заканчивается место, и нам нужно удалить некоторые файлы. Мы хотим заменить все эти файлы текстовыми файлами с комментариями о том, когда файл был удален, с датой последней полной резервной копии, чтобы, когда пользователь когда-нибудь вернется и будет искать определенные файлы, тогда по крайней мере имя файлов будет там и они могут посоветовать нам, с какой даты его восстановить. К сожалению, это требование руководства.   -  person Tiaan    schedule 03.10.2013
comment
Вы хотите создать пустые файлы txt? Это так же просто и очень быстро, и не требует дополнительного места на жестком диске сервера.   -  person foxidrive    schedule 03.10.2013
comment
Я думаю, что больше всего поможет сделать копию всех файлов в определенной структуре папок (включая файлы в подпапках) с .txt и ввести конкретные комментарии в эти txt-файлы. Затем после запуска скрипта я могу просто удалить все файлы, отличные от txt? Я думаю, можно было бы начать с листинга каталогов... возможно ли сделать что-то подобное?   -  person Tiaan    schedule 03.10.2013


Ответы (2)


Это обычная пакетная задача:

@echo off
pushd "c:\data\folder"
echo creating "%%a.txt"
for /f "delims=" %%a in ('dir /b /a-d ') do copy /y "%%a" "%%a.txt" >nul
popd
person foxidrive    schedule 03.10.2013
comment
Этот код хорошо работает благодаря foxidrive, единственная проблема в том, что он делает замещающий текстовый файл того же размера, что и исходный файл. Есть ли способ заменить содержимое замещающего текстового файла моими собственными комментариями, чтобы уменьшить размер? - person Tiaan; 07.10.2013
comment
Укажите задачу, включая комментарии, и она должна быть выполнима. На этот вопрос был дан ответ, и ответ должен быть принят - чтобы изменить вопрос о переполнении стека, вам действительно нужно открыть новый вопрос, поскольку каждый вопрос и ответ должны стоять сами по себе. - person foxidrive; 07.10.2013
comment
Я понимаю foxidrive, пожалуйста, посмотрите новый опубликованный вопрос: stackoverflow.com/questions/19245013/ - person Tiaan; 08.10.2013
comment
Спасибо - пожалуйста, примите ответ, нажав на серую галочку, если это решило вопрос. - person foxidrive; 08.10.2013

Хорошо, не сложно, но есть некоторые вещи, которые вам нужно заполнить, прежде чем вы сможете запустить этот пакетный файл (убедитесь, что он запущен в том же каталоге):

@echo off
set dir="C:\users\...[path to copy target (that is NEW location)]"
copy *.* %dir%\*.txt

И ГОТОВО!

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

Изменить 1

Этот код использует forfiles и будет работать только в Windows 7, если у вас установлен инструмент Windows (большинство компьютеров будут)

@echo off
set dir="C:\users\...[path to copy target (that is NEW location)]"
forfiles /c "cmd /c (copy @file %dir%\@file.txt)"

Он должен работать нормально.

Мона

person Monacraft    schedule 03.10.2013
comment
Я попробую и дам вам знать. Оцените быстрый ответ, спасибо, Мона! - person Tiaan; 03.10.2013
comment
Привет, Мона, это работает, но ... есть ли способ сделать копию этих файлов, чтобы включить их расширения, то есть сделать abc.xls = abc.xls.txt - person Tiaan; 03.10.2013
comment
@Tiaan Проверьте через несколько минут, я отредактирую ответ (обратите внимание, что это может работать только в Windows 7) - person Monacraft; 03.10.2013
comment
@Tiaan Если на вашем компьютере нет forfiles, есть более длинный способ сделать это, не полагаясь на него. - person Monacraft; 03.10.2013
comment
Работает как часы!! Я протестировал его на своем компьютере с Win 7, но мне нужно применить его на сервере Server 2008 R2, все равно должно работать? - person Tiaan; 03.10.2013
comment
@Tiaan Я так думаю, вы можете установить на него forfiles, если хотите (это очень полезно для пакетных заданий с одной командой), в противном случае используйте решение foxidrive. - person Monacraft; 03.10.2013
comment
Привет, Мона, ты помогла мне с этим скриптом некоторое время назад: - person Tiaan; 18.03.2014
comment
@echo off for /f delims= %%a in ('dir /b /a-d ') do ( echo create %%a.txt ›%%a.txt echo Этот файл был удален, чтобы освободить место на диске E. rem чтобы удалить все исходные файлы, вы можете раскомментировать следующую строку, удалив rem rem del %%a ) popd - person Tiaan; 18.03.2014
comment
Есть ли способ отредактировать этот сценарий, чтобы он применялся ко всем файлам в подпапках? - person Tiaan; 18.03.2014
comment
@Tiaan Легко, просто добавьте /s к forfiles как: forfiles /s. Если вы нашли это полезным, пожалуйста, исправьте мой ответ. - person Monacraft; 19.03.2014