Как я могу создать несколько, пронумерованные копии файла в Windows?

Я не знаю, существует ли стандарт для этого, но лично я полагаю, что моя система 'загружается', когда я могу открыть меню "Пуск" (или прикрепление) и запустить приложение. Перед той точкой я действительно не считаю систему применимой.

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

6
задан 29 July 2010 в 17:33
5 ответов

Некоторый пакет-fu. Замените "source-file.html" своим исходным именем файла. Это сделает Ваши начальные нули, также. Сохраните это как.BAT или.CMD и позвольте 'er разрыву.

@echo off

for /L %%i IN (1,1,100) do call :docopy %%i
goto :EOF

:docopy
set FN=00%1
set FN=%FN:~-3%

copy source-file.html poll%FN%.html

Править:

Решить менее общий случай в сприте ответа sysadmin1138:

@echo off
for /L %%i IN (1,1,9) do copy source-file.html poll00%%i.html
for /L %%i IN (10,1,99) do copy source-file.html poll0%%i.html
copy source-file.html poll100.html
9
ответ дан 3 December 2019 в 00:05

Следующая powershell острота должна добиться цели:

2..100 | %{cp poll001.html ("poll{0:D3}.html" -f $_)}
5
ответ дан 3 December 2019 в 00:05

Пакетный файл должен сделать это. От вершины моей головы:

for /L %%N in (1,1,100) do echo <html></html> > poll%%N.html

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

for /L %%N in (1,1,9) do echo <html></html> > poll00%%N.html
for /L %%N in (10,1,99) do echo <html></html> > poll0%%N.html
echo <html></html> > poll100.html

Двойной процент перед N необходим, если это используется в пакетном файле. Если Вы работаете, это непосредственно от подсказки cmd использует единственный процент (Н).

1
ответ дан 3 December 2019 в 00:05

Попробуйте fileboss.

0
ответ дан 3 December 2019 в 00:05

Вот очень быстрая (lessTested) версия кода C#,
Вы упомянули Python, это не то, что, к сожалению, можно попробовать, преобразовывают в Python. Или если кто-то может объяснить, как это может быть выполнено в powershell.

using System;
using System.IO;

namespace TestnaKonzola
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter The First file name:");
            string firstFile = Path.Combine(Environment.CurrentDirectory, Console.ReadLine());
            Console.WriteLine("Enter the number of copyes:");
            int noOfCopy = int.Parse(Console.ReadLine());
            string newFile = string.Empty;
            for (int i = 0; i < noOfCopy; i++)
            {
                newFile = NextAvailableFilename(firstFile);
                Console.WriteLine(newFile);
                File.Copy(firstFile, newFile);   
            }
            Console.ReadLine();



        }
        public static string NextAvailableFilename(string path)
        {
            // Short-cut if already available
            if (!File.Exists(path))
                return path;

            // If path has extension then insert the number pattern just before the extension and return next filename
            if (Path.HasExtension(path))
                return GetNextFilename(path.Insert(path.LastIndexOf(Path.GetExtension(path)), numberPattern));

            // Otherwise just append the pattern to the path and return next filename
            return GetNextFilename(path + numberPattern);
        }
        private static string numberPattern = "{000}";
        private static string GetNextFilename(string pattern)
        {
            string tmp = string.Format(pattern, 1);
            if (tmp == pattern)
                throw new ArgumentException("The pattern must include an index place-holder", "pattern");

            if (!File.Exists(tmp))
                return tmp; // short-circuit if no matches

            int min = 1, max = 2; // min is inclusive, max is exclusive/untested

            while (File.Exists(string.Format(pattern, max)))
            {
                min = max;
                max *= 2;
            }

            while (max != min + 1)
            {
                int pivot = (max + min) / 2;
                if (File.Exists(string.Format(pattern, pivot)))
                    min = pivot;
                else
                    max = pivot;
            }

            return string.Format(pattern, max);
        }
    }
}
0
ответ дан 3 December 2019 в 00:05

Теги

Похожие вопросы