Пакетное переименование файлов и перемещение в подпапки (которые должны быть созданы)
500
user1769925
У меня есть папка с файлами формата «10389-2001.pdf», поэтому сначала пятизначное число, дефис, а затем четырехзначное число. Я хочу переименовать все, чтобы только сам файл назывался «2001.pdf», но чтобы он был перемещен в новую подпапку «10389». Поскольку эта подпапка еще не существует, ее необходимо создать.
Я открыт для предложений о том, как сделать это в командной строке Windows, Powershell или Cygwin.
Вы пробовали что-нибудь? В PowerShell я думаю, что вам нужно только использовать `.Stubstring (0," - ")` файла `BaseName` и` .Substring (1, "-") `файла` Name`, чтобы начать работу: `Move-Item -Path $ original_file.FullName -Destination" $ ($ (Split-Path -Parent -Path $ original_file.FullName) \ $ ($ original_file.BaseName.Substring (0, "-")) \ $ ($ original_file.Name.Substring (1, "-")) "`
flolilolilo 6 лет назад
0
Привет и добро пожаловать в SuperUser. Мы не являемся услугой «пожалуйста, напишите мне сценарий». Если вы поделитесь своими исследованиями, мы поможем вам указать, где что-то не работает должным образом. Решение может быть сделано любым из упомянутых инструментов, которые вы хотите использовать. Для Batch вам захочется заглянуть в команду FOR.
LPChip 6 лет назад
2
Привет, спасибо за ваши ответы. Я совершенно некомпетентен с PowerShell, поэтому я ничего там не пробовал. Я знаком с командой FOR в командной строке для создания цикла, но я боролся со строковыми манипуляциями там.
user1769925 6 лет назад
0
Легко с VBS. Скопируйте код в файл с расширением .vbs
on Error Resume Next sFolder = "D:\test\" dFolder = "D:\test1\" Set oFSO = CreateObject("Scripting.FileSystemObject") For Each oFile In oFSO.GetFolder(sFolder).Files NameParts = split(oFile.Name,"-") Set f = oFSO.CreateFolder(dFolder & NameParts(0)) set fi = oFSO.GetFile(oFile) fi.Copy dFolder & NameParts(0) & "\" & NameParts(1) Next
настроить исходную и целевую папку. Не забывайте "\" в конце. Папка назначения должна существовать. Quick'n'dirty закодированы. Только ?????-????? файлы в sourceFolder.