批处理文件嵌套的IF语句帮助 - CMD批处理

时间:2016-07-01 18:38:08

标签: shell batch-file if-statement cmd

我目前正在编写一个简单的批处理文件。我不是编程新手,但绝不是专家。这是我第一次使用批处理文件。

基本上我希望将一个目录中的文件移动到另一个目录,如果目标目录中已存在同名文件,则会将其重命名为备份。这样,如果意外运行该脚本,它将始终保留备份。

对我的代码进行了几个小时的故障排除后,我仍然不知道它为什么不起作用。我怀疑它与嵌套的if语句有关。 if语句中的If语句(缺少更好的解释)。

我很感激帮助。感谢

var areaChartData = {
labels: labelsnuevos(productos),
   // here goes my dataset
};

function labelsnuevos(productos)
{
    var labels = [];

    $.each(productos, function(key, value) {
        var lab = value.nombre;
        labels.push(lab);
    });
    return labels;
}

为我的草率评论道歉。

2 个答案:

答案 0 :(得分:1)

用双引号括起所有文件引用。用户名或文件名中的空格将破坏大多数批处理脚本。

E.g。您的pre1变量等于push backup,其中包含空格。

所以你的第3次exist测试:

if exist %dir2%%pre1%%file% ( ... )

将转换为(评估其他变量并假设用户名为jack):

if exist C:\Users\jack\Desktop\Dir2\push backupfile.txt ( ... )

这将检查名为:

的文件
  

在文件夹中:

  

C:\用户\千斤顶\桌面\ Dir2中\

如果该文件存在,那么应该执行的命令是:

  

backupfile.txt(...)

用双引号包装文件引用:

if exist "%dir2%%pre1%%file%" ( ... )

你得到了理想的支票:

if exist "C:\Users\jack\Desktop\Dir2\push backupfile.txt" ( ... )

答案 1 :(得分:-2)

第一个IF缺少一个else,而第一个IF缺少一个true的右侧paan。

应该有')else()'来完成语法。

由于某种原因,他们现在显示。

为你没有的那个添加else()。