我正在编写一个批处理文件,可以使用谷歌地图地理定位 API 跟踪丢失的 Android 手机。我无法理解我的代码有什么问题。我遵循了在互联网上找到的所有内容,但如果我运行代码,它会返回“语法不正确”或类似的内容。如果基本名存在,它基本上会增加文件名。你能告诉我我的代码有什么问题以及如何纠正它吗?
:MainProcessNew
cd C:\Users\%USERNAME%\Documents
for %%G IN (*.json) do (
set file = %%G
)
set "baseName=data"
set "n=0"
:loop
set /a n+=1
if exist "%baseName%%n%.json (
goto loop
)
echo.>"C:\Users\%USERNAME%\Documents\data%n%.json"
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Windows批处理文件中使用这些命令行:
SET mypath="%programfiles(x86)%\Directory\SubDirectory"
SET app2="com.estrongs.android.pop_4.1.6.8.9.3-604_minAPI14(armeabi^,armeabi-v7a^,x86)(nodpi)_apkmirror.com.apk"
If Not Exist "%mypath%\includes\apk\%app2%" (
Rem DO SOMETHING
) ELSE (
Rem DO SOMETHING ELSE
)
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误:
(nodpi)_apkmirror.com.apk was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)
执行批处理文件时出现此错误消息的原因是什么?
我正在学习批处理脚本,我复制了如何检查空的示例:
@echo off
SET a=
SET b=Hello
if [%a%]==[] echo "String A is empty"
if [%b%]==[] echo "String B is empty "
Run Code Online (Sandbox Code Playgroud)
但我收到这样的错误:
D:\Projects\Temp\BatchLearning>Script.bat
]==[] was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)
什么问题?为什么这是在指南中。过去有用吗?从这里的例子。
更新:
我删除了第 2、3 和 5(最后)行末尾的一些空格,现在一切都按预期工作,这是怎么回事?
我最近在文章“ 查找子字符串是否在字符串中(而不是在文件中)”中发现
@setlocal enableextensions enabledelayedexpansion
@echo off
set str1=%1
if not x%str1:bcd=%==x%str1% echo It contains bcd
endlocal
Run Code Online (Sandbox Code Playgroud)
然后
在
x平等的双方之前是要确保字符串bcd工作好。它还可以防止某些“不合适的”起始字符。
但是,我还没有找到关于this实际效果的任何解释x。那么x"%string%"和之间有什么区别"%string%"?
我想编写一段简单的代码来获取一些格式良好的“时间戳”。把时间花在我的两个变量上,Start并且End工作正常。我也可以将其打印为0:0:0。我想要一个小于零的前导零,但是很显然我得到一个错误,说“未找到或错误键入参数10”。我发现这似乎是要比较的变量,但未能解决。有任何想法吗?
@ECHO OFF
REM Time Calculation
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Second /Format:table ^| findstr /r "."') DO (
set Day=%%A
set Hour=%%B
set Minute=%%C
set Second=%%D
)
set /a Start=%Day%*8640000+%Hour%*360000+%Minute%*6000+%Second%*100
@ECHO ON
ping 8.8.8.8 -n 11
@ECHO OFF
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Second /Format:table ^| findstr /r "."') DO (
set Day=%%A
set Hour=%%B
set Minute=%%C
set Second=%%D
)
set /a End=%Day%*8640000+%Hour%*360000+%Minute%*6000+%Second%*100
set /a …Run Code Online (Sandbox Code Playgroud) 我有一个简单的批处理脚本test.bat,它通过命令行参数进行迭代:
@echo off
set prefix=C:\Program Files\MyProg
for %%x in (%*) do (
echo %prefix%
)
Run Code Online (Sandbox Code Playgroud)
这个版本的脚本在 cmd.exe 中没有问题:
C:\>test a b
C:\Program Files\MyProg
C:\Program Files\MyProg
Run Code Online (Sandbox Code Playgroud)
但是,如果我修改批处理文件以具有不同的prefix值,则添加(x86):
set prefix=C:\Program Files (x86)\MyProg
Run Code Online (Sandbox Code Playgroud)
脚本失败:
C:\>test a b
\MyProg was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)
这悲剧!我该如何解决这个问题?
我在下面写了示例批处理脚本,变量COUNT正在更新但不知何故MY_ROOT没有得到更新,我在这里遗漏了什么?
@echo off
setlocal ENABLEDELAYEDEXPANSION
set MY_ROOT= C:\
set COUNT=0
if 1 == 1 (
set MY_ROOT = D:\
echo MY_ROOT = !MY_ROOT!
set /A COUNT=10
echo Count = !COUNT!
)
:end
**o/p:**
MY_ROOT = C:\
Count = 10
Run Code Online (Sandbox Code Playgroud)
谢谢.
我是批处理新手,因此我无法弄清楚,为什么会出现语法错误??
这是我的代码:
set /p hostname1=<a.txt
echo %hostname1%
PAUSE
IF %hostname1% == 0 (
SET %hostname02% = 1
echo %hostname02% >> a.txt
PAUSE
)
IF %hostname1% == 1 (
SET %hostname03% = 2
echo %hostname03% >> a.txt
PAUSE
exit
)
IF %hostname1% == 2 (
echo MSGBOX "Message" > %temp%\TEMPmessage.vbs
call %temp%\TEMPmessage.vbs
del %temp%\TEMPmessage.vbs /f /q
)
Run Code Online (Sandbox Code Playgroud)
这只是一个“为了好玩”的项目,但我想知道为什么我会收到这个烦人的错误!
我是批处理编码的新手。所以在基础知识上很挣扎。我想连接两个变量,然后在第三个变量中打印其连接结果。
批号
@echo off
SET basePath = C:\Users\Documents\
echo basePath - %basePath%
SET fileName = T_test
echo fileName - %fileName%
SET extension= .csv
echo extension - %extension%
SET finalvalue = %basePath%%fileName%%extension%
echo finalvalue - %finalvalue%
pause
Run Code Online (Sandbox Code Playgroud)
实际产量
basePath -
fileName -
extension - .csv
finalvalue -
Run Code Online (Sandbox Code Playgroud)
预期输出
basePath - C:\Users\Documents\
fileName - T_test
extension - .csv
finalvalue - C:\Users\Documents\T_test.csv
Run Code Online (Sandbox Code Playgroud)
*****更新******
由于 fileName 变量具有多个用逗号分隔的值。我想一一迭代
Batch Code
@echo off
SET basePath=C:\Users\Documents\
echo basePath - %basePath%
SET fileName=T_test,T_test2,T_test3
echo fileName - %fileName%
SET …Run Code Online (Sandbox Code Playgroud) 代码优先:
ECHO off
SET home = c:\Cygwin\home\ian
SET update_log = %home%\update.txt
^^^^^^
Run Code Online (Sandbox Code Playgroud)
有没有办法在%home%变量的初始化中添加update_log变量,如上例所示?
我有一个批处理脚本:
echo on
Set appdir=This is testing for substring : Management\s18vx
ECHO %appdir%
REM get substring i.e, s18vx
Set SubStr = %appdir:~43%
ECHO %SubStr%
cmd /k
Run Code Online (Sandbox Code Playgroud)
获取子字符串后,我将其设置为新变量。在 Echo 上,此变量不打印任何内容。不知道这里出了什么问题。基本上我想用提取的字符串填充新变量,即本例中的 s18vx 。