С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337

Синтаксическая ошибка в имени файла

09.09.2017, 18:10. Показов 3696. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Написал простую программу для шифрования и дешифрования имен файлов в конкретной папке, но для некоторых файлов выскакивает синтаксическая ошибка. Есть ли функция, которая преобразует запрещенные символы в названии файла туда и обратно или это нужно делать вручную? Какие символы в названии файла запрещены?

Мой код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html>
<html>
<head>
  <meta charset="windows-1251">
  <title>WORKING WITH FILES [encode/decode]</title>
  <link rel="stylesheet" href="">
</head>
<body>
 
<?php
function Encode( $str ) 
{
for ($i = 0; $i < strlen($str); $i++)
{
$str[$i] = chr(ord($str[$i]) + strlen($str));
}
return $str;
}
 
$dir = "TEST"; //Папка с файлами
 
if (! ( $handle = opendir( $dir ) ) ) die( "Cannot open $dir." );
 
  $files = array();
 
  while ( $file = readdir( $handle ) ) {
    if ( $file != "." && $file != ".." ) {
      if ( is_dir( $dir . "/" . $file ) ) $file .= "/";
      $files[] = $file;
    }
  }
foreach ( $files as $file ) 
{
rename($dir."/".$file, $dir."/".Encode($file));
echo "Files encoded!"."<br />";
}
?>
</body>
</html>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2017, 18:10
Ответы с готовыми решениями:

Синтаксическая ошибка в имени файла, имени папки или метке тома
Здравствуйте. Выполняю лаб. работу в cmd, в которой есть задание связанные с командой &quot;Copy&quot;. Появляется вот такое сообщение...

Синтаксическая ошибка в имени файла, имени папки или в метке тома
Не знаю выбрал я подходящую тему и касается ли моя проблема Windows 8.1,но всё же. При каждой моей попытке указать директорию я получаю...

[WinError 123] Синтаксическая ошибка в имени файла, имени папки или метке тома: '<frozen importlib._bootstrap>'
Начал изучать Django и вот моя первая проблема,гуглил как мог не нашел ничего,помогите пожалуйста!!!

11
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
10.09.2017, 16:56
Fixer_84, urlencode, urldecode
0
0 / 0 / 0
Регистрация: 05.03.2025
Сообщений: 8
05.03.2025, 20:58
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$dir='C:\xampp\htdocs\dashboard\scan';
$simple='ОД_';
$files=scandir($dir);
for($i=2;$i<count($files);$i++)
{
    echo $files[$i].'</br>';
}
 
$content=file_get_contents('C:\xampp\htdocs\dashboard\scan\list.txt');
$lines=explode("\n",$content);
$j=-1;
for($i=2;$i<count($lines)+2;$i++)
{
    $j++;
    rename(""scan/$files[$i]"",""scan/$simple$lines[$j].PDF"");
}
?>
такая же проблема непонятно чего синтаксическая ошибка.
0
Заблокирован
06.03.2025, 06:44
Цитата Сообщение от Nyckolay Посмотреть сообщение
непонятно чего синтаксическая ошибка.
Очень даже понятно. Кто вас учил ставить подряд двойные кавычки?
Цитата Сообщение от Nyckolay Посмотреть сообщение
rename(""scan/$files[$i]"",""scan/$simple$lines[$j].PDF"");
Добавлено через 4 минуты
Цитата Сообщение от Nyckolay Посмотреть сообщение
$lines=explode("\n",$content);
На винде перевод строки разве не \r\n ?
0
Эксперт PHP
 Аватар для liris
4373 / 1013 / 154
Регистрация: 16.01.2023
Сообщений: 2,510
06.03.2025, 09:56
Цитата Сообщение от sajokarife Посмотреть сообщение
На винде перевод строки разве не \r\n ?
Лучше использовать PHP_EOL. Тогда интерпретатор будет сам подставлять корректный символ перевода строки, в зависимости от платформы, на которой запускается код (очень актуально, когда разрабатываешь на винде, а потом заливаешь на линуксовый сервер).

https://www.php.net/manual/ru/... nt.php-eol
0
0 / 0 / 0
Регистрация: 05.03.2025
Сообщений: 8
06.03.2025, 11:20
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$dir='C:\xampp\htdocs\dashboard\scan';
$simple='ОД_';
$files=scandir($dir);
for($i=2;$i<count($files);$i++)
{
    echo $files[$i].'</br>';
}
 
$content=file_get_contents('C:\xampp\htdocs\dashboard\scan\list.txt');
$lines=explode(PHP_EOL,$content);
$j=-1;
for($i=2;$i<count($lines)+2;$i++)
{
    $j++;
    rename("\"scan/$files[$i]\"","\"scan/$simple$lines[$j].PDF\"");
}
Выправил символ конца строки и екранировал кавычки ошибка не ушла, дальше гуглю прооблему, если есть еще какие либо мысли, буду благодрен.
0
0 / 0 / 0
Регистрация: 05.03.2025
Сообщений: 8
06.03.2025, 11:23
Код ошибки стал с 123 раньше был 2
Миниатюры
Синтаксическая ошибка в имени файла  
0
Заблокирован
06.03.2025, 12:23
Цитата Сообщение от Nyckolay Посмотреть сообщение
rename(""scan/$files[$i]"",""scan/$simple$lines[$j].PDF"");
}
PHP
1
 rename("scan/$files[$i]","scan/$simple$lines[$j].PDF");
0
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2
07.03.2025, 17:32
Цитата Сообщение от Nyckolay Посмотреть сообщение
ошибка не ушла
1. У вас случайно не с кодировкой проблема?
2. Я, к сожалению, не разбираюсь в кодах ошибок вашего фреймворка, поэтому не могу сказать по кодам. "Синтаксическая ошибка" - это обобщенное понятие. Попробуйте проверить, существует ли исходный файл. Например, при помощи функции is_file()

Добавлено через 3 минуты
3. Попробуйте сделать trim("scan/$files[$i]");
Подставив это в качестве первого параметра в
Цитата Сообщение от I.F.Y. Посмотреть сообщение
rename("scan/$files[$i]","scan/$simple$lines[$j].PDF");
Возможно, в конце или начале имени файла содержится что-то вроде \r или некий пробельный символ. При дебаге в браузере его не всегда возможно обнаружить.
1
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,814
07.03.2025, 18:13
Nyckolay, На винде Двойные кавычки недопустимы в названии файла.
0
0 / 0 / 0
Регистрация: 05.03.2025
Сообщений: 8
08.03.2025, 09:41
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$dir='C:\xampp\htdocs\dashboard\scan';
$simple='ОД_';
$files=scandir($dir);
for($i=2;$i<count($files);$i++)
{
    echo $files[$i].'</br>';
}
 
$content=file_get_contents('C:\xampp\htdocs\dashboard\scan\list.txt');
$lines=explode(PHP_EOL,$content);
$j=-1;
for($i=2;$i<count($lines)+2;$i++)
{
    $j++;
    rename("scan/".$files[$i],"scan/".$simple.$lines[$j].".PDF");
}
Преобразовал код убрав двойные кавычки. Это вариант заработал. Всем спасибо.

Добавлено через 4 минуты
PHP
1
rename("scan/$files[$i]","scan/$simple$lines[$j].PDF");
P.S. Код выше почти работал. Грохал список, и переименовывал последний файл. Все остальные оставались без изменений.
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,814
08.03.2025, 10:51
Цитата Сообщение от Nyckolay Посмотреть сообщение
PHP
1
rename("scan/$files[$i]","scan/$simple$lines[$j].PDF");
Это что? Лучше верните конкатенацию с точками.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.03.2025, 10:51
Помогаю со студенческими работами здесь

RichEdit и Синтаксическая ошибка в имени файла
Помогите в решении вопроса. При попытке загрузить в RichEdit файл следующим образом:{ if( ListView2-&gt;Selected != 0 ){ ...

Сообщение об ошибке "Синтаксическая ошибка в имени файла, имени папки или метке тома."
Всем доброй ночи, уважаемые форумчане! Делаю лабораторную работу, вот текст примера: D: Cd masm32\text Copy *.* d:\sample1 Dir...

При отправке файла при помощи TFTP в логе появляется запись: "Синтаксическая ошибка в имени файла"
Здравствуйте! Использую такую команду: &gt;tftp 192.x.x.150 get C:\scan\file_555.txt 192.x.x.68 Хочу с 150-го компа перекинуть файлик на...

Ошибка TNS-01150: Указан неверный адрес имени прослушивателя NL-00303: синтаксическая ошибка в NV-строке
после команды lsnrctl status выдает такую ошибку: TNS-01150: Указан неверный адрес имени прослушивателя NL-00303: синтаксическая...

Ошибка открытия файла из-за длинного полного имени файла
Windows XP и 7, Visual Studio 10 и 12. В программе на C# при открытии файла docdoc = word.Documents.Open(ref filename, ref confConv, ref...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Old Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru