You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMD创建文本文件遭拒绝访问及if exist判断异常问题咨询

嘿,我来帮你拆解这个问题——你现在碰到的是文件判断异常、权限拒绝还有脚本逻辑小错误的组合问题,咱们一步步来解决:

一、先修正脚本里的明显逻辑错误

你在createproc标签里的数值计算写错了!批处理里直接拼接字符串不会自动计算数值,这会导致创建的文件夹名称错误,进而让后续的if exist判断完全失效:
原错误代码:

for /f "delims=" %%b in ("setupcj.txt") do set stp=%%b+1

修改为(用set /a实现数值计算):

for /f "delims=" %%b in ("setupcj.txt") do set /a stp=%%b+1

这样才能正确把setupcj.txt里的数字加1,得到合法的数字文件夹名称,而不是像0+1这种奇怪的字符串名称。

二、解决if exist判断异常的问题

你遇到的判断不符合实际情况,大概率是当前目录不对或者文件属性导致的CMD缓存问题:

  1. 强制切换到脚本所在目录:在脚本最开头加上pushd "%~dp0",确保所有操作都在脚本所在的文件夹下执行——双击脚本时,CMD的当前目录可能默认是系统目录(比如C:\Windows\System32),这会导致你找不到自己创建的文件:
@echo off
pushd "%~dp0"  REM 切换到脚本所在的绝对目录
title Folder Safe
color e8
  1. 验证文件真实状态:可以在判断前加一行dir /a "infocj.txt",/a参数会显示所有属性的文件(包括隐藏、系统属性),帮你确认文件到底存不存在:
dir /a "infocj.txt"
if exist "infocj.txt" goto start
goto MAKESOURCE

三、解决"Access is denied"权限问题

即使是管理员,也会遇到这类问题,常见原因和解决方法:

  • 不要把脚本放在系统目录:比如C:\Windows、C:\Program Files这些目录有严格的UAC保护,建议把脚本移到用户目录(比如桌面、C:\Users\你的用户名\Documents)或者自定义的非系统文件夹;
  • 改用更可靠的文件创建方式:break>命令在某些环境下有兼容性问题,换成type nul>"文件名"创建空文件更稳定:
REM 替换 break>"infocj.txt"
type nul>"infocj.txt"
  • 检查文件夹NTFS权限:右键脚本所在文件夹→属性→安全→高级,确认你的管理员账户拥有「完全控制」权限,没有的话点击「编辑」添加权限;
  • 关闭锁定文件的程序:杀毒软件、云同步工具(OneDrive、百度云)会实时扫描/锁定文件,暂时禁用实时防护或暂停同步,再测试脚本;
  • 确保属性修改命令执行成功:在修改属性后检查错误码,避免因为属性没修改成功导致后续操作失败:
attrib -s -h -r "infocj.txt"
if errorlevel 1 (
    echo 无法修改infocj.txt属性,权限不足!
    pause
    exit /b 1
)

四、整合修复后的关键代码片段

把上述修复点整合后,MAKESOURCE和createproc标签的代码如下:

:MAKESOURCE
rem 改用可靠的空文件创建方式,并检查错误
type nul>"infocj.txt"
if errorlevel 1 (
    echo 创建infocj.txt失败,请检查文件夹权限!
    pause
    exit /b 1
)
attrib +s +h +r "infocj.txt"

type nul>"setupcj.txt"
>> "setupcj.txt" echo 0
attrib +s +h +r "setupcj.txt"
goto START

:createproc
rem 修复数值计算逻辑
for /f "delims=" %%b in ("setupcj.txt") do set /a stp=%%b+1

rem 先解锁文件属性,再操作
attrib -s -h -r "infocj.txt"
if errorlevel 1 (
    echo 无法解锁infocj.txt属性!
    pause
    exit /b 1
)

for /f "tokens=* usebackq" %%a in ("infocj.txt") do set inf=%%a
set inf=%inf%%pass%;

del /f "infocj.txt"
type nul>"infocj.txt"
>> "infocj.txt" echo %inf%
attrib +s +h +r "infocj.txt"

rem 处理setupcj.txt
attrib -s -h -r "setupcj.txt"
del /f "setupcj.txt"
type nul>"setupcj.txt"
>> "setupcj.txt" echo %stp%
attrib +s +h +r "setupcj.txt"

md %stp%
echo your locker hashes to the number %stp%
pause
exit

内容的提问来源于stack exchange,提问作者anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:08:45