Я только начал работу над большим проектом, который в основном состоит из анализа данных и поиска алгоритмов для поддержания определенной функции системы.batch: сравнение имен файлов и их переименование
Чтобы начать работу, я получил кучу записанных данных, которые, к сожалению, несовместимы, когда дело доходит до наименования. Обычно все файлы (все в одной папке) должны начинаться с SPY.SPYNODE.SIDE
, а затем продолжаться с конкретными именами для каждого значения или переменных. Однако регистратор данных испортил его пару раз и дает странные имена, такие как SP0E1A~1.csv
(все файлы являются CSV-файлами).
Вот и я решил, что вместо того, чтобы переименовать пару тысяч файлов вручную, я мог бы «легко» использовать простой командный файл для выполнения этого задания для имени. И это именно то, когда я начал сходить с ума :-)
До сих пор я придумал следующее:
FOR /R %%i in (%CD%) DO (
set file1=%%i
if not %file1%=="SPY.SPYNODE.SIDE" DO (
set /p "filename" < %file1%
rename %file1% %filename%
)
)
Так что я хочу сделать это (в псевдокоде)
look through the whole folder and every file
save the filename in variable file1
if file1 partially equals SPY.SPYNODE.SIDE
open the file and save the first line (which contains the correct name of the file) in variable filename
rename the file with the correct filename
Но пока это действительно не работает, и я не знаю почему.
Как мне продолжить?
Если это Windows (похоже, это), перейдите на Powershell или WSH (Windows Scripting Host) через VBScript или JScript. Первый предварительно установлен с Vista (IIRC), последний доступен в любой разумной версии Windows. Эти среды намного мощнее, чем 'cmd.exe'. [Один пример] (http://www.vbforums.com/showthread.php?504189-Rename-multiple-files-in-a-folder&s=672f44a31da84b872b13eae691ec8167&p=3111195&viewfull=1#post3111195). – kostix
Как SP0E1A ~ 1 частично соответствует SPY.SPYNODE.SIDE? И, как первая строка файла? –