strcpy(strng, "cd.. ");
strcat(strng, "& copy %cd%\\bin\\");
strcat(strng, file);
strcat(strng, " %cd%\\txt");
system( strng );
Приветствую, я работал над обработкой файлов для C в Windows и, к сожалению, столкнулся с этим странным рассолом. Хотя я заставил большую часть своего кода работать, включая проблему, с которой я столкнулся ранее, «cd..», похоже, неправильно переходит в родительский каталог. Есть ли какая-нибудь информация о том, почему [или быстрое и аналогичное решение]?
Предварительно в программе это работает в этой короткой строке кода:
if (numLog > 8) {
system("cd.. & cd txt & del *.txt");
return errinit(); };
Хорошо в курсе! Спасибо за советы! @Пэдди
Ваша эффективная строка
cd..& copy %cd%\bin\file %cd%\txt
Пакет анализирует всю строку, затем выполняет ее, поэтому %cd%
оценивается как ее значение до, cd ..
выполняется.
copy %cd%\..\bin\file %cd%\..\txt
должен делать то, что вы, кажется, хотите.
Имейте в виду, что если имена ваших каталогов содержат пробелы, все это развалится. Рассмотрите возможность заключения имен в двойные кавычки. В более общем плане использование вызовов
system
не делает код особенно надежным или переносимым. В большинстве случаев этого следует избегать.