cmd仅重命名文件夹中每个文件名的特定部分

时间:2018-02-07 09:46:18

标签: command-line cmd command command-prompt

例如,我想替换-v1的每个文件名中的所有-v2部分。它几乎正常工作,但访问被拒绝,因为执行期间cmd进程本身正在使用这些文件。我目前的代码是:

for /f "delims=" %%a in ('dir /a-d /b *-v1*') do ren "%%a" "%%a:-v1=-v2"

有什么建议吗? :)

编辑:

我也尝试了for /r %%i in ("*-v1*") do ren "%%~nxi" "%%~nxi:-v1=-v2"并找到了文件并使用了正确的重命名值,但仍然输出它无法访问该文件,因为它正被另一个进程使用。我确定该进程是cmd.exe本身,因为在关闭命令提示符后,我可以手动更改文件名而不会出现任何问题。

我还尝试将当前文件名写入临时.txt文件,并认为任何命令都不会使用我要重命名的文件。然后在for循环中使用type命令读取文件以重命名每个文件,但同样的事情。

非常令人沮丧,感谢任何帮助:)

1 个答案:

答案 0 :(得分:1)

substring substituion不适用于%%a变量(@echo off setlocal enabledelayedexpansion for /f "delims=" %%a in ('dir /a-d /b *-v1*') do ( set filename=%%a ren "%%a" "!filename:-v1=-v2!" ) )。使用“普通”变量和delayed expansion

private static int ROWS= 5;
private static int COLUMNS = 3;
static Scanner console = new Scanner(System.in);

public static void main(String[] args)
{
    boolean myA[][] = new boolean [ROWS][COLUMNS];
    popArray(myA);
}

public static void popArray(boolean answ, boolean pArray[][])
{
    System.out.println("Enter true or false.");

    for (int i=0; i<COLUMNS ; i++)
    {
        for (int j=0; j<ROWS; j++)
        {
            pArray[i][j] = console.nextBoolean();
        }

    }
}