wallner-avat opened a new issue, #18177: URL: https://github.com/apache/iotdb/issues/18177
### Search before asking - [x] I searched in the [issues](https://github.com/apache/iotdb/issues) and found nothing similar. ### Version Reproduced on **2.0.8** and current **master** (identical code). Present since the tool was introduced (#12325); not addressed by #12435 (launch scripts) or #12450 (permission-detection logic). Environment: - OS: Windows (reproduces wherever the install path contains a space) - IoTDB: 2.0.8 and master ### Describe the bug and provide the minimal reproduce step On Windows, if IoTDB is located under a path that contains a space (e.g. `C:\Program Files\iotdb`), the health-check tool's *Installation Environment(Directory Access)* check splits directory paths at the space. It: 1. **creates a stray empty directory** such as `C:\Program`, and 2. prints garbled results - e.g. `"C:\Program" has write permission` followed by `"Files\...\ext\pipe" has write permission` - instead of one line for the real directory. To reproduce: 1. Unzip/install IoTDB into a path containing a space, e.g. `C:\Program Files\iotdb` (or `C:\test dir\iotdb`). 2. Run `tools\windows\ops\health_check.bat -o local`. 3. Observe a stray empty `C:\Program` directory, and split/garbled lines in the Directory Access section. Any configured directory under the spaced install path triggers it; the `ext/*` dirs (`pipe_lib_dir` / `udf_lib_dir` / `trigger_lib_dir`) hit it by default because they resolve to `%IOTDB_HOME%\ext\...`. Affected file: `scripts/tools/windows/ops/health_check.bat`, routine `:local_dirs_check`. Root cause: `:local_dirs_check` joins the directory variables into `spacedirs` with **spaces** and iterates with `for %%a in (%spacedirs%)`. The `for ... in (set)` form tokenizes on spaces (and `,`/`;`), so a path containing a space is split into two tokens. The inner `for %%b`/`%%c` loops already preserve spaces for the `;`/`,` multi-dir separators via the `"!var:;=" "!"` technique, but the outer space-join defeats that. Separately, `%%c` (from `for %%c in ("...")`) still carries its surrounding quotes, so `mkdir "%%c"` expands to `mkdir ""C:\Program Files\...""` - a doubly-quoted path the argument parser re-splits. ### What did you expect to see? Each configured directory is checked as a single path; no stray directory is created; the output has one clean line per directory. ### What did you see instead? The tool splits directory paths at the space and creates a stray directory. ### Anything else? The docs recommend a space-free install path, but the tool shouldn't *create stray directories* or emit corrupt output when that guidance isn't met - especially since Windows users frequently install under `C:\Program Files`. A minimal fix is available (see PR). ### Are you willing to submit a PR? - [x] I'm willing to submit a PR! -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
