例如,我想替换-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
命令读取文件以重命名每个文件,但同样的事情。
非常令人沮丧,感谢任何帮助:)
答案 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();
}
}
}